let oldMessages = Object.assign({}, this.state.messages);
// this.state.messages[0].id = 718

console.log(oldMessages[0].id);
// Prints 718

oldMessages[0].id = 123;

console.log(this.state.messages[0].id);
// Prints 123

如何防止oldMessages成为引用,我想更改oldMessages的值而不更改state.messages的值

最佳答案

您需要进行深拷贝。 Lodash's cloneDeep使这个变得容易:

import cloneDeep from 'lodash/cloneDeep';
const oldMessages = cloneDeep(this.state.messages);
oldMessages[0].id = 123;

关于javascript - 如何在React中深度克隆对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48710797/

10-09 14:26