如何避免带循环的setState?我有这个
this.setState({'some_other_key':123, ...here})
我做{{1}}它似乎不起作用。
答案 0 :(得分:1)
您只需要将那些元素提供给您希望更改的setState而不是其他元素,因此您只需要
this.setState({'some_other_key':123})
setState
执行合并,因此如果密钥存在,则其值会发生变化,如果不存在则会创建一个新密钥,而所有其他密钥都保持不变。
为了将对象添加到setState数组,您可以执行以下操作
this.setState(prevState => ({
exist: [...prevState.exist, {'some_other_key':123}]
}))
答案 1 :(得分:0)
尝试const exist = {{a: 'abc'},{b: 'xyz'}}
答案 2 :(得分:0)
循环在哪里?
如果你有
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'
}
这就是点差运营商'......'的工作原理。