数据流和数据绑定的思考

最近在看React官方文档中有这样一段描述。

React’s one-way data flow(also called one-way binding) keeps everything modular and fast.

one-way data flowone-way binding到底如何理解,是一码事吗?

one-way data flow字面理解单向数据流,one-way binding字面理解单向数据绑定。数据流,那它一定有一个“源头”A和一个“目的地”B,数据的流动方向从A—>B。在React中或者Vue,一个组件可以看做一个状态机,每个组件维护着自身的状态。子组件可以通过props获取到父组件的状态,但是不允许修改,只能通过回调或者事件去通知父组件进行修改。这样做的目的就是为了在复杂的系统中,能够更清晰的知道什么时候,是谁因为什么对状态做了修改。这是我理解的单向数据流,数据只能从父传递到子,不能从子到父,也不能在子组件中修改父组件中的状态。

另一个概念,数据绑定,是指数据和视图之间的依赖关系。现在前端框架都遵循数据驱动的理念,数据的变化带来视图的变化,其中比较典型的VueAngular,双向绑定的楷模。他们做的一件事就是让开发人员不再关心数据变化造成视图更新这个过程,只专注在数据层面,数据到视图,视图再到数据,这两个双向的过程都有框架来完成。但React只做了其中一点,从数据到视图,当我们需要更新视图的时候,通过setState显示的调用更改,通知React更新视图,这就是为什么说React是one-way binding的。

按照我的理解,单向数据流和单向数据绑定应该是两码事,不知道为什么React官方会这么解释,还是我的理解有偏差。