mikumikugo

博客园 首页 新随笔 联系 订阅 管理

区分受控组件与非受控组件的标志是组件中的input等表单元素的值的来源与去向是否受到组件状态的影响,如果受到状态的影响,则称为受控组件,反之为非受控组件

狭义的受控组件:针对于表单控件而言,表单控件的value值受状态的控制,并且会影响到状态

受控组件

class Demo extends React.Component {
          state={
               inputValue:'初始值'
}

          handleChange=(e)=>{

         this.setState({
                  inputValue:e.target.value
})
}
           render(){

              return <div>
                          <input type='text'value={this.state.inputValue  onChange={this.handleChange}}/ > </div> } }

非受控组件

class Demo extends React.Component {

             render(){


                 return  <div>
                                <input type='text'/>
                            </div>




}






}

广义的受控组件:子组件没有自己的状态,其数据完全受传自于父组件的props控制

class Father extends Component{
            state={
                     name:'Jake'
                   }
              handleChange=(text)=>{
                     this.setstate({
                                 name:text
})
}
           render(){
                return <div>
                             <Child  name={this.state.name} handleChange={this.handleChange}/>

                          </div>
}
}

class Child extends Component{
               render(){
                   return <div>
                                 <input type='text'   value={this.props.name}  onChange={(e)=>{this.props.handleChange(e.target.value)}}/>
                             </div>
}
}

 

posted on 2022-02-13 22:56  mikumikugo  阅读(31)  评论(0编辑  收藏  举报