有什么赛义德另一个问题据:我们应该做的,当我们需要克隆的对象深深
蔓延运营商就像是Object.assign并且不深克隆 对象。 JSON工作的原因是因为你创建了一个全新的对象,它会通过严格的相等性检查,但是 所有的组件都会不必要地更新,因为现在没有任何东西会通过 严格的相等性检查。
Object.assign({} ... prevState,... newState)将创建一个新的 顶级对象,但它不会对嵌套在prevState或newState任何对象 创建新的对象。但是,您必须仔细地更新嵌套对象 以避免不必要的重新呈现。对于深度嵌套的对象和数组,这可能会很棘手。
我的问题是......当我们需要返回具有包含数组的属性的对象的新版本时,我们必须做些什么?例如:
const foo = {
myArray: [1, 2, 3],
name: 'Hello world'
};
const clonedObj = { ...foo }
这将创建一个名称的副本一个新的对象和它的内容,myArray的密钥的副本,但不与副本[1,2,3]。
JSON.parse + JSON.stringify做的伎俩,但看起来不像一个干净的方式。
我还有什么替代方案?
谢谢
https://stackoverflow.com/questions/4459928/how-to-deep-clone-in-javascript 希望这有助于。 –