如何避免带循环的setState?我有这个
const here = [{a: 'abc'},{b: 'xyz'}]
我做this.setState({'some_other_key':123, ...here})
它似乎不起作用。
您只需要将那些元素提供给您希望更改的setState而不是其他元素,因此您只需要
this.setState({'some_other_key':123})
setState
执行合并,因此如果密钥存在,则其值为更改,如果不存在则创建新的并且所有其他的保持原样。
为了将对象添加到setState数组,您可以执行以下操作
this.setState(prevState => ({
exist: [...prevState.exist, {'some_other_key':123}]
}))
试试const exist = {{a: 'abc'},{b: 'xyz'}}
循环在哪里?如果你有const here = {a:'abc', b:'xyz'}
然后this.setState({'some_other_key':123, ...here})
应该工作。
如果const here = [{a: 'abc'},{b: 'xyz'}]
那么{'some_other_key':123, ...here}
是
{
'some_other_key': 123,
0: {a: 'abc'},
1: {b: 'xyz'}
}
如果const here = {a: 'abc', b: 'xyz'}
那么{'some_other_key':123, ...here}
是
{
'some_other_key': 123,
a: 'abc',
b: 'xyz'
}
这就是传播运算符'......'的工作原理。