(1)受控组件 在使⽤表单来收集⽤户输⼊时,例如 等元素都要绑定 ⼀个change事件,当表单的状态发⽣变化,就会触发onChange事件,更新组件的state。这种组件在 React中被称为受控组件,在受控组件中,组件渲染出的状态与它的value或checked属性相对应, react通过这种⽅式消除了组件的局部状态,使整个状态可控。react官⽅推荐使⽤受控表单组件。 受控组件更新state的流程: 可以通过初始state中设置表单的默认值 每当表单的值发⽣变化时,调⽤onChange事件处理器 事件处理器通过事件对象e拿到改变后的状态,并更新组件的state ⼀旦通过setState⽅法更新state,就会触发视图的重新渲染,完成表单组件的更新 受控组件缺陷: 表单元素的值都是由React组件进⾏管理,当有多个输⼊框,或者多个这种组件时,如 果想同时获取到全部的值就必须每个都要编写事件处理函数,这会让代码看着很臃肿,所以为了解决这种 情况,出现了⾮受控组件。
(2)⾮受控组件 如果⼀个表单组件没有value props(单选和复选按钮对应的是checked props) 时,就可以称为⾮受控组件。在⾮受控组件中,可以使⽤⼀个ref来从DOM获得表单值。⽽不是为每个状 态更新编写⼀个事件处理程序