7.受控、非受控组件

10/11/2023 react

React的受控组件与非受控组件的概念是相对于表单而言的,在React中表单元素通常会持有一下内部的state,因此它的工作方式与其他HTML元素不一样,而获取表单元素内部state的实现方式的不同,就产生了受控组件和非受控组件。

表单:

受控表单:表单控件中的值都由state对象来管理,state对象中存储的值和表单控件中的值是同步状态的。

非受控表单:表单控件的值由DOM元素本身管理

# 受控组件

  • 每当表单的状态发生变化时,都会被写入到组件的state中。
  • 在受控组件中,组件渲染出的状态与它的value或checked prop相对应。【受父组件(外部状态)、自身的状态控制】
  • react受控组件更新state的流程: 通过在初始state中设置表单的默认值。
    每当表单的值发生变化时,调用onChange事件处理器。
    事件处理器通过合成对象event拿到改变后的状态,并更新应用的state。
    SetState触发视图的重新渲染,完成表单组件值的更新。

# 非受控组件

  • 如果一个表单组件没有value prop就可以称为非受控组件。
  • 非受控组件是一种反模式,它的值不受组件自身的state或props控制。
  • 通常需要为其添加ref prop来访问渲染后的底层DOM元素。
  • 可通过添加defaultValue指定value值。
最近更新时间: 12/8/2023, 6:41:34 AM
강남역 4번 출구
Plastic / Fallin` Dild