在上周,我一直试图理解双向数据绑定(Angular)和单向数据流(React/Flux)是如何不同的.他们说单向数据流更强大,更容易理解和遵循:它是确定性的,有助于避免副作用.然而,在我的新手眼中,它们看起来几乎相同:视图监听模型,模型对视图所做的操作做出反应.两者都声称模型是真实的唯一来源.
任何人都能以可理解的方式全面解释它们之间的真正差异以及单向数据流如何更有益且更容易推理?
在Angular中你有很多控制器.一个示例是用户触发由控制器1管理的视图1上的操作.控制器1执行某些操作但也触发由另一个控制器2捕获的事件.控制器2更新$ scope上的某些属性,而视图2突然显示改变.
突然对View 1进行操作,更新View 2.如果我们现在抛出一些Async回调和更多的事件链,您可能不再确切知道您的视图何时/如何更新.
使用Flux/Redux,您可以使用单向数据流.视图永远不会更新模型,视图只能调度操作(更新意图),但让store/reducer决定如何处理更新.您可以更轻松地推断数据流,因为您可以轻松查看每个视图可以触发的操作.然后跟进以查看商店如何处理该操作,您可以确切地知道可以更新的内容.