gpt4 book ai didi

reactjs - Vuex 和 Redux 不变性方法的差异

转载 作者:行者123 更新时间:2023-12-03 06:37:33 25 4
gpt4 key购买 nike

玩过 Vuex 并意识到通过简单赋值的突变处理程序来改变状态是多么容易,我现在正在使用 redux 并了解到 redux 强调不变性,但它使编码更加冗长。现在问题来了,

  • 为什么 redux 强调不变性而 vuex 没有?
  • 为什么即使你可以做 redux 似乎更受欢迎
    与 vuex 一样,编码要简单得多?
  • 是什么
    这两种不同方法的优缺点?

  • 令人惊讶的是
    我在互联网上找不到任何信息。

    最佳答案

    要回答这些问题,您需要知道它们是如何工作的。 Veux 的状态是 observable/reactive所以设置 state.something 将触发任何观看 state.something 的东西。
    Redux 状态是一个“普通”的 javascript 数据对象(对象上没有方法,也不应该使用原型(prototype))。当一个 Action 被调度时,redux 会创建一个新状态,react-redux 将运行所有 mapStateToPropsuseSelector函数并将当前结果与最后一个结果进行比较(使用引用比较所以 {} !== {} 。如果有变化,那么 react-redux 将重新渲染该组件。
    现在回答您的问题:

  • Veux 状态不仅仅是一个对象,而且很多监听器被添加到状态中,所以当你这样做时 state.newValue='new value'它会触发所有这些听众。 Redux 需要将先前的值与当前值进行比较,而最高效的方法是引用比较。因此,您必须生成一个新状态,其中所有未更改的 Prop 仍指向与以前相同的引用,但更改的 Prop 指向另一个引用。
  • React/Redux 使用函数式方法,而 vue/veux 使用 OO 方法。为什么它受欢迎可能是因为 React Redux 存在的时间更长,并且有更好的支持生态系统。函数式编程最近变得越来越流行,因为即使经过几十年的尝试,在 OO(并发)中编写好的代码仍然非常困难。鲍勃叔叔能想到的最好的一句话是“一个类(class)应该只有一个改变的理由”。并根据该规则编写,您最终将得到一个类,该类仅具有可以用函数完成的方法。在一个类中组合相关数据和行为的一个问题是,稍后这种关系可能会在以后发生变化,或者您发现将它们关联起来的方式并不能反射(reflect)现实世界中需要实现的内容。
  • 它们既难学又好做,我发现 redux 更容易遵循和预测在复杂代码库中会发生什么(复杂的需求,而不是不必要的复杂性)并且更容易测试,但最终这只是个人喜好。
  • 关于reactjs - Vuex 和 Redux 不变性方法的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63228857/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com