React中的组件分为受控组件和非受控组件
受控组件的两个要点:

  • 组件的value属性与React中的状态绑定
  • 组件内声明了onChange事件处理value的变化
  • 非受控组件更像是传统的HTML表单元素,数据存储在DOM中,而不是组件内部,获取数据的方式是通过ref引用

一些建议:

  • 尽可能使用受控组件
  • 受控组件是将状态交由React处理,可以是任何元素,不局限于表单元素
  • 对于有大量表单元素的页面,使用受控组件会使程序变得繁琐难控,此时使用非受控组件更为明智
  • 在受控组件中,数据流是单向的(state是变化来源),因此在改变state时都应该使用setState,而不要强制赋值
  • Refs不能用于函数式组件,因为函数式组件没有实例
  • 在函数式组件内部,是可以使用Refs的