单向数据流不是 React 独有的概念,但作为一名 JavaScript 开发人员,这可能是您第一次听到它(如果您没使用过 React 或 Vue 类似的框架)。
一般来说,这个概念意味着数据只有一种方式可以传输到应用程序的其他部分。
在 React 中,这意味着:
- 状态传递给视图和子组件
- 操作由视图触发
- 操作可以更新状态
- 状态更改被传递给视图和子组件
以上的单向数据流的简单示意图如下:
视图是应用程序状态的结果。状态只能在操作发生时改变。当操作发生时,状态会更新。
由于单向绑定,数据不能以相反的方式流动(例如,双向绑定(Vue)会发生这种情况),这具有一些关键优势:
- 它不易出错,因为您可以更好地控制数据
- 调试起来更容易,因为您知道来自哪里
- 它更有效,因为库已经知道系统每个部分的边界是什么
状态始终由一个组件拥有。任何受此状态影响的数据都只能影响它下面的组件:它的子组件。
更改组件的状态不会影响其父组件、同级组件或应用程序中的任何其他组件:仅影响其子组件。
这就是状态经常在组件树中向上移动的原因,以便可以在需要访问它的组件之间共享。