Javascript 对象的变异克隆正在变异从父组件传递下来的原始对象属性

Javascript 对象的变异克隆正在变异从父组件传递下来的原始对象属性,javascript,reactjs,object,Javascript,Reactjs,Object,我有一个父组件,它将一个数据数组传递给一个子组件,然后该子组件从数组中选择一个对象,克隆它,变异它,并将其设置为状态 我遇到的问题是,当我变异克隆时,它实际上也在变异数组道具中的对象。看起来它实际上并没有被克隆,但仍然被用作参考 我目前正在使用React 16.7.0a,但我怀疑这与它有任何关系 const dummyDomain = { ...domains[domains.length - 1] } const newDomain = Object.assign({}, dummyDomai

我有一个父组件,它将一个数据数组传递给一个子组件,然后该子组件从数组中选择一个对象,克隆它,变异它,并将其设置为状态

我遇到的问题是,当我变异克隆时,它实际上也在变异数组道具中的对象。看起来它实际上并没有被克隆,但仍然被用作参考

我目前正在使用React 16.7.0a,但我怀疑这与它有任何关系

const dummyDomain = { ...domains[domains.length - 1] }
const newDomain = Object.assign({}, dummyDomain)
newDomain.basics.name = 'please dont change the original object'
上面的代码在子组件挂载时运行,当它挂载时,我用react-dev工具检查父组件,数组中的原始对象已经发生了变化


我以前从未遇到过React的问题,这就是为什么我提出使用React 16.7.0a的事实。很明显,我并不是直接引用对象,而是实际创建了一个新对象,那么这会带来什么呢?

所以您有几种方法来处理这个问题。不引入第三方库的方法是使用对象深度拷贝

const newDomain = JSON.parse(JSON.stringify(dummyDomain));
否则,您就可以将不可变数据移动到类似immutable.js的东西(它在幕后做这类事情)上