首页 > 解决方案 > Object.assign 方法将更改源对象属性 - JS

问题描述

我是 ReactJS 的新手,我发现了一件奇怪的事情Object.assign()

const B = {
    k1: 'b',
    k2: 'bb',
    treedata: [{
        children: ['g']
    }]
}

var A = Object.assign({}, B);
A.treedata[0].children = [1];
console.log(B)

如您所见,在 之后Object.assign(),更改 objectA也会更改 object B。为什么会发生这种情况,如何避免这种情况?

标签: javascriptreactjs

解决方案


您需要解析和区分对象,然后object.assign像这样使用,这样var A = Object.assign({}, JSON.parse(JSON.stringify(B)));原始对象就不会改变

查看片段

const B = {
k1 : 'b', 
k2 : 'bb', 
treedata : [{ title: 'title', key: -1, fieldName: '', from: -1, to: -1, children: ['g'] }]
}

var A = Object.assign({}, JSON.parse(JSON.stringify(B))); 

A.treedata[0].children = [1];
alert(B.treedata[0].children);


推荐阅读