Redux:通过创建浅拷贝来改变状态如何在reducer中引起问题?

Redux:通过创建浅拷贝来改变状态如何在reducer中引起问题?,redux,Redux,制作状态的浅层副本在Redux文档中列出如下: 函数updateNestedState(状态、操作){ //问题:这只是一个浅拷贝! 让newState={…state} //错误:nestedState仍然是同一个对象! newState.nestedState.nestedField=action.data 返回新闻状态 } 我还是不明白为什么这是Redux的问题。Redux中的reducer不是同步工作吗?当reducer返回时,Redux将只考虑返回的新状态并丢弃旧状态?根据我与Mar

制作状态的浅层副本在Redux文档中列出如下:

函数updateNestedState(状态、操作){
//问题:这只是一个浅拷贝!
让newState={…state}
//错误:nestedState仍然是同一个对象!
newState.nestedState.nestedField=action.data
返回新闻状态
}

我还是不明白为什么这是Redux的问题。Redux中的reducer不是同步工作吗?当reducer返回时,Redux将只考虑返回的新状态并丢弃旧状态?

根据我与Mark Erikson(Redux mantainer)的讨论,它不会导致Redux出现问题,但会破坏围绕它构建的库和工具(Redux-DevTools、React-Redux、React等)依赖于不变性的正确使用

  • 时间旅行调试和组件重新渲染很可能会中断
  • 还原函数完全有可能改变它的状态,但我们不应该做这些事情
资料来源: