Skip to content
微信公众号

受控组件和非受控组件的选用标准

非受控组件

它指的是表单数据交由DOM节点管理,这就是非受控组件。特点是表单数据在需要时进行获取,代码实现相对简单。例如:

jsx
function App(){
    const userInput = useRef();
    function handleSubmit(){
        const username = userInput.current.value;
    }
    return <form onSubmit={handleSubmit}>
        <input type="text" ref={userInput} />
        <input type="submit"/>    
    </form>;
}

受控组件

它是表单数据交由state对象管理。特点是可以实时得到表单数据,代码相对复杂。

jsx
class App extends Component{
    state = { username:'' };
    handleChanage(event){
        this.setState({
            username: event.target.value
        });
    }
    render(){
        return <form>
            <input type="text" value={this.state.username}
                onChange={this.handleChange.bind(this)} />
        </form>
    }
}

选用标准

以上是受控组件和非受控组件的回顾,那平时开发过程中,如何去选择到底是使用受控组件还是使用非受控组件呢?其实受控组件和⾮受控组件都有其特点, 应该根据需求场进⾏选择。在⼤多数情况下, 推荐使⽤受控组件处理表单数据。如果表单在数据交互⽅⾯⽐简单, 使⽤⾮受控表单, 否则使⽤受控表单。

场景非受控受控
表单提交时取值
表单提交时验证
表单项元素实时验证
根据条件禁用提交按钮
强制输入内容的格式
一个数据的多个输入

本站总访问量次,本站总访客数人次
Released under the MIT License.