当我们设置状态时,引用地址是否会更改,即 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()
不会执行深层复制。它仅执行浅层合并。