受控组件 和 非受控组件

概览

文章内容选自陈屹的《深入React技术栈》,本文的主题是介绍受控组件与非受控组件。

内容

1、受控组件(React官方推荐)

维护者:使用者
表单元素中,每当表单的状态发生变化时,需要 写入组件的state ,组件渲染出的状态与它的 value 或 checked prop 相对应。

2、非受控组件(React反模式)

维护者:dom 自身
表单元素中,通过 defaultValue 或者 defaultChecked 来设置表单的默认值,仅会被渲染一次 ,在后续的渲染中并不起作用。

补充:值不受组件自身的 state 或 props 控制, 通过 添加 ref prop 来访问渲染后的底层 DOM 元素。

3、对比受控组件与非受控组件

最大区别:非受控组件的状态并不会受应用状态的控制,而受控组件的值来源于组件的状态。

1、性能问题:
受控组件:每当表单的值发生变化时,会调用一次 onchange 事件处理器,会产生性能消耗。

2、 事件绑定:
受控组件:需要绑定 change 事件,并且需要定义一个事件处理器来同步 表单值 和 组件 的状态。

你可能感兴趣的:(受控组件 和 非受控组件)