首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Redux中,不可变性检查中间件是做什么的?

在Redux中,不可变性检查中间件是做什么的?
EN

Stack Overflow用户
提问于 2022-05-03 05:56:52
回答 1查看 454关注 0票数 1

我正在学习Redux,并遇到了configureStore()的默认中间件:

根据此页

不可变检查中间件:深入比较突变的状态值。它可以在调度期间检测减速器中的突变,也可以检测在调度(例如组件或选择器中)之间发生的突变。当检测到突变时,它将抛出一个错误,并指示在状态树中检测到变异值的关键路径。(从redux-不可变状态不变量分叉。)

我很困惑。还原器和分派函数不应该改变状态值吗?为什么要抛出错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-03 06:18:42

很容易在组件中意外地改变状态。

想象一下你有这样的东西

代码语言:javascript
运行
复制
const myList = useSelector(state => state.foo.bar)
myList.sort()

这是一个偶然的状态突变--因为myList是对您的存储的引用,而.sort()改变了一个数组,而不是创建一个新的排序副本。

这是一个经常被忽略的bug,直到您变得非常奇怪,很难在应用程序中调试bug。

至于减速器被允许突变状态:是和否。在类似于createSlice的immer还原器中,您可以编写变异逻辑,但是在引擎盖下,它将创建旧状态的新副本,并且永远不会“变异”旧状态--因此这是安全的。但是,如果您正在手工编写一个还原器,那么很容易完成与上面相同的操作--调用.sort().push,然后意外地修改旧的存储值。

中间件检查了这两种情况:减速器外的意外突变,以及手写的意外突变。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72095307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档