是 setState 是 反应中的浅拷贝或深拷贝



当我们设置状态时,引用地址是否会更改,即 react 在setState中是做浅拷贝还是深拷贝?

this.setState({count:1})

setState()如何工作?

每当你将一个对象传递给setState()(你也可以在这里传递函数(,React 都会获取这个对象并将其合并到state对象中。

两个对象的合并如何工作?

合并两个对象的工作方式如下:如果两个对象都具有同名的属性,则第二个对象属性将覆盖第一个对象属性。让我们看一个例子,

let obj1 = { // Consider this as state
name: 'Ajay',
music: ['Shape of you','Closer']
}
let obj2 = { // Consider this as the object you pass to setState()
music: 'Cheap Thrills'
}
let obj3 = {...obj1, ...obj2} // Consider this as the new state
console.log(obj3)

输出

{ name: 'Ajay', music: 'Cheap Thrills' }

请注意,这只是一个浅层合并。因此,setState()不会执行深层复制。它仅执行浅层合并。

最新更新