HMR*_*HMR 13
要回答这些问题,您需要了解它们的工作原理。Veux 有一个可观察/反应的状态,因此设置 state.something 将触发任何监视 state.something 的东西。
Redux 状态是一个“正常”的 javascript 数据对象(对象上没有任何方法,也不应该使用原型)。当一个动作被分派时,redux 会创建一个新的状态,react-redux 将运行所有的mapStateToPropsoruseSelector函数并将当前结果与最后一个进行比较(使用引用比较 so {} !== {}。如果有变化,那么 react-redux 将重新渲染那个组件。
现在回答您的问题:
Veux 状态不仅仅是一个对象,而且许多侦听器都被添加到状态中,所以当你这样做时,state.newValue='new value'它会触发所有这些侦听器。Redux 需要将以前的值与当前值进行比较,而最高效的方法是引用比较。因此,您必须生成一个新状态,其中所有未更改的 props 仍指向与以前相同的引用,但更改的 props 指向另一个引用。
React/Redux 使用函数式方法,而 vue/veux 使用 OO 方法。它之所以受欢迎可能是因为 React Redux 存在的时间更长,并且拥有更好的支持生态系统。函数式编程最近变得越来越流行,因为即使经过几十年的尝试,仍然很难在 OO(并发)中编写好的代码。鲍勃叔叔能想到的最好的办法是“一个班级应该只有一个改变的理由。” 并根据该规则编写,您最终将得到一个只有方法可以用函数完成的类。在类中组合相关数据和行为的一个问题是,稍后这种关系可能会改变,或者您发现关联它们的方式并不能反映现实世界中需要实现的内容。
它们都很难学习并且做得很好,我发现 redux 方式更容易遵循和预测复杂代码库中会发生什么(复杂的需求,而不是不必要的复杂性)并且更容易测试,但最终这只是个人偏好。
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |