首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应浅薄,多次比较作品?

反应浅薄,多次比较作品?
EN

Stack Overflow用户
提问于 2019-04-16 07:09:51
回答 1查看 94关注 0票数 1

根据In Redux, is it necessary to do deep copy,为了处理嵌套对象的更新,我们应该创建多个浅拷贝,而不是深拷贝。

根据Redux的文件,

如果要正确更新任何连接的组件,Redux对浅相等检查的使用要求不可变。为了了解原因,我们需要理解JavaScript中浅的和深的相等检查之间的区别。

所以我有两个问题。

  1. 浅相等检查是否意味着用多个浅拷贝对嵌套对象进行多个浅相等检查?如果不是,那么仅仅一个浅等式如何才能正确地检测深嵌套对象的不可变性?
  2. 根据https://redux.js.org/faq/performance#do-i-have-to-deep-clone-my-state-in-a-reducer-isnt-copying-my-state-going-to-be-slow的说法,浅拷贝比深拷贝快,所以坚持不要使用深拷贝。我能理解。但是我们必须多次使用浅拷贝来保持嵌套对象的不可变性。那么,对于永恒性而言,浅层复制和深拷贝的多次表现不是都是相同的吗?
EN

回答 1

Stack Overflow用户

发布于 2019-04-16 07:34:21

这意味着只需要复制状态的更新部分。如果需要更新state.foo,应该有选择性的浅拷贝:

代码语言:javascript
运行
复制
{
  foo: {...prevState.foo, newValue},
  bar
}

不是整个州的一份深刻的副本:

代码语言:javascript
运行
复制
{
  foo: {...prevState.foo, newValue},
  bar: {...prevState.bar}
}

这样可以获得更好的性能,并允许假设通过浅相等检查的状态的某些部分没有像prevState.bar === newState.bar那样被更改。

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

https://stackoverflow.com/questions/55702483

复制
相关文章

相似问题

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