为什么使用 redux 来实现不可变状态

2024-03-05

我正在学习 redux,并且正在努力理解为什么状态必须是不可变的。您能否为我提供一个示例(最好是代码),其中打破不可变合约会导致不那么明显的副作用。


Redux 最初是为了演示“时间旅行调试”的理念而发明的 - 能够在分派操作的历史记录中来回查看,并查看每一步的 UI 外观。另一个方面是能够实时编辑代码,重新加载它,并查看给定新的减速器逻辑的输出是什么样的。

为了能够在状态之间正确地来回切换,我们需要确保减速器函数没有副作用。这意味着数据更新需要一成不变地应用。如果reducer函数实际上直接修改其数据,那么在状态之间来回切换将导致应用程序以意想不到的方式运行,并且调试工作将被浪费。

此外,React-Redux 库依赖于浅层相等检查来查看组件的传入数据是否已更改。如果数据引用相同,则生成的包装组件connect假设数据没有改变,并且组件不需要重新渲染。不可变的数据更新意味着创建新的对象引用,因此connect将看到数据已更改并且 UI 需要更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 redux 来实现不可变状态 的相关文章

随机推荐