使用react进行开发时深度复制对象

时间:2018-01-30 04:02:08

标签: javascript reactjs object deep-copy

使用react a进行开发时深度复制对象是否必须练习? 或者像Object.assign()这样的浅层复制方法是否足够?

3 个答案:

答案 0 :(得分:0)

实际上首选浅拷贝,因为它表示某些属性值没有改变。

答案 1 :(得分:0)

Object.assign将仅为一个级别创建创建深层副本。它创建了它的孩子的浅拷贝。使用嵌套组件时,使用浅拷贝和传递引用是有问题的。

回答您的问题,建议使用深层复制而不是Object.assign,就好像您将任何属性作为子组件的对象传递一样,此子对象中的更改将不会反映到子组件,因为它很浅复制。在某些情况下,浅拷贝不会触发变化检测。

最好的方法是使用immutable模式。

答案 2 :(得分:0)

React不强制/推荐任何一种方法。反应并不在乎。您的数据流架构通常决定了您的州应该如何对待。即Redux大力倡导通常使用immutableJS实现的不可变数据结构。通常,建议使用不可变数据结构,因为它们是多线程安全的并且通过意外更新来消除错误。但反应自己不关​​心它。在这个特定的一个可以是反应,角度,vue或下一个不可变结构将始终更清洁和更安全使用,并应该使用,如果您的架构允许它