Javascript 如何使用Object.assign使状态在React中不可变?

Javascript 如何使用Object.assign使状态在React中不可变?,javascript,reactjs,Javascript,Reactjs,我一直在研究react,我知道我们不应该直接改变状态,因为它不会呈现组件。相反,我们应该使用setState方法。为此,我们需要将整个对象复制到另一个对象中,然后更改元素,但这可能非常昂贵。我听说Object.assign有助于实现这一点,还有什么是实现这一点的最佳方法?我不知道React,但如果您需要制作对象的浅拷贝,确实可以让您这样做: var theCopy = Object.assign({}, theOriginal); 这个例子也说明了我所说的“肤浅”的含义: //一份原件,有三

我一直在研究react,我知道我们不应该直接改变状态,因为它不会呈现组件。相反,我们应该使用setState方法。为此,我们需要将整个对象复制到另一个对象中,然后更改元素,但这可能非常昂贵。我听说Object.assign有助于实现这一点,还有什么是实现这一点的最佳方法?

我不知道React,但如果您需要制作对象的浅拷贝,确实可以让您这样做:

var theCopy = Object.assign({}, theOriginal);
这个例子也说明了我所说的“肤浅”的含义:

//一份原件,有三个属性;第三个是指一个对象
var理论原始={
答复:42,,
问题:“生命、宇宙和一切”,
obj:{
傅:“酒吧”
}
};
//抄袭
var theCopy=Object.assign({},theOriginal);
//请注意,对象的属性未链接
日志(“theOriginal.answer:+theOriginal.answer”);
日志(“theCopy.answer:+theCopy.answer”);
copy.answer=67;
日志(“更新了copy.answer:+theCopy.answer”);
//但请注意,虽然'obj'属性被复制,但
//副本指的是*相同*对象:
日志(“theOriginal.obj.foo:+theOriginal.obj.foo”);
日志(“theCopy.obj.foo:+theCopy.obj.foo”);
theOriginal.obj.foo=“更新”;
日志(“更新的theOriginal.obj.foo:+theOriginal.obj.foo”);
日志(“更新了theCopy.obj.foo:+theCopy.obj.foo”);
函数日志(msg){
var p=document.createElement('pre');
p、 appendChild(document.createTextNode(msg));
文件.正文.附件(p);
}