什么时候用受控组件,什么时候用非受控组件?

来源:3-4 React 表单

feng2

2019-05-30 00:12

什么时候用受控组件,什么时候用非受控组件?

写回答 关注

1回答

  • 紫轩丨丶飞
    2019-06-03 14:33:25

    前情提要:

    HTML 表单元素天生就存在一些内部状态,比如 input、textarea 和 select 这些标签,它们会维持自己的内部状态,并且根据用户的输入去进行更新。但是在 React 中,这些可变状态一般保持在 state 中,然后通过 this.setState() 方法去进行更新。

    你必须要知道:

    因为 React 默认是单向数据流的处理方式。也就是说,我们可以动态绑定输入框的值在 state (组件的状态)当中,当数据发生改变时,我们必须手动监听输入框的 onChange 事件,在事件处理函数中手动通过 this.setState() 方法驱动视图的更新。【因为不存在指令的概念,所以 React 只支持数据的单向流动(绑定),不同于 Vue 的 v-model 指令可以自动实现表单数据的双向绑定。这个一定要清楚。】

    注意:有时使用受控组件可能会非常繁琐,因为你要为数据可能发生的变化,对于每一种变化方式都要编写一个事件处理程序,并且通过一个组件来管理全部的状态。当将已经有的代码库转化为 React,或者将 React 应用程序与非 React 库集成的时候,这可能变得非常烦人。

    应用场景:

    由于非受控组件将真实数据保存在 DOM 中,因此在使用非受控组件时,更容易同时集成 React 和非 React 的代码。

    如果你想快速而随性,这样可以减少代码量。否则,你应该使用受控组件。



基于实例的 React16 傻瓜课程

通过一系列简单有趣的例子,让你了解 React16 的基本概念和新特性

22325 学习 · 103 问题

查看课程

相似问题