我正在学习 redux,并且正在努力理解为什么状态必须是不可变的。您能否为我提供一个示例(最好是代码),其中打破不可变合约会导致不那么明显的副作用。
Redux 最初是为了演示“时间旅行调试”的理念而发明的 - 能够在分派操作的历史记录中来回查看,并查看每一步的 UI 外观。另一个方面是能够实时编辑代码,重新加载它,并查看给定新的减速器逻辑的输出是什么样的。
为了能够在状态之间正确地来回切换,我们需要确保减速器函数没有副作用。这意味着数据更新需要一成不变地应用。如果reducer函数实际上直接修改其数据,那么在状态之间来回切换将导致应用程序以意想不到的方式运行,并且调试工作将被浪费。
此外,React-Redux 库依赖于浅层相等检查来查看组件的传入数据是否已更改。如果数据引用相同,则生成的包装组件connect
假设数据没有改变,并且组件不需要重新渲染。不可变的数据更新意味着创建新的对象引用,因此connect
将看到数据已更改并且 UI 需要更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)