setState对象数组

时间:2017-12-21 10:54:43

标签: javascript reactjs ecmascript-6 redux

如何避免带循环的setState?我有这个

this.setState({'some_other_key':123, ...here})

我做{{1}}它似乎不起作用。

3 个答案:

答案 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' } 这就是点差运营商'......'的工作原理。