React系列十:受控组件与非受控组件
)}increment(){this.setState({counter:this.state.counter+1,})}}classAppextendsPureComponent{构造函数(props){super(props)this.counterRef=createRef()}render(){return(
this.increment()}>app+1
)}increment(){this.counterRef.current.increment()}}函数式组件没有实例,所以无法通过ref获取,但是有时候,我们可能希望在函数式组件中获取一个DOM元素。这时候我们可以通过React.forwardRef,后面我们会学习如何在hooks中使用ref来识别非受控组件。React在大多数情况下推荐使用受控组件来处理表单数据:在受控组件中,表单数据由React组件管理;另一种选择是使用非受控组件,然后表单数据将由DOM节点处理;如果我们要使用非受控组件中的数据,那么我们需要使用Ref从DOM节点中获取表单数据。我们来做一个简单的演练:使用ref获取输入元素;defaultValue通常用于在非受控组件中设置默认值;classAppextendsPureComponent{constructor(props){super(props)this.usernameRef=createRef()}render(){return(
this.handleSubmit(e)}><标签htmlFor="">用户:
)}handleSubmit(event){event.preventDefault()console.log(this.usernameRef.current.value)}}同样,
和支持defaultChecked,