React 受控组件 和 不受控组件
受控组件
在HTML中,表单元素(如 input、textarea、select)之类的表单元素通常可以自己维护state,并根据用户的输入进行更新。而在React中,可变状态(mutable state)通常保存在组件的 state 属性中,并且只能通过 setState()来更新。 在此,我们将 React的state作为唯一的数据源,通过渲染表单的React组件来控制用户输入过程中表单发送的操作。 这个“被React通过此种方式控制取值的表单输入元素”被成为受控组件。
不受控制组件
从字面意思来理解:不被React组件控制的组件。在受控制组件中,表单数据由 React组件处理。其替代方案是不受控制组件,其中表单数据由DOM本身处理。文件输入标签就是一个典型的不受控制组件,它的值只能由用户设置,通过DOM自身提供的一些特性来获取。
受控组件和不受控组件最大的区别就是前者自身维护的状态值变化,可以配合自身的change事件,很容易进行修改或者校验用户的输入。
在React中 因为 Refs的出现使得 不受控制组件自身状态值的维护变得容易了许多,接下来我们就重点介绍一下 Refs的使用方式。