setState对象数组

问题描述 投票:1回答:3

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

const here = [{a: 'abc'},{b: 'xyz'}]

我做this.setState({'some_other_key':123, ...here})它似乎不起作用。

javascript reactjs ecmascript-6 redux
3个回答
1
投票

您只需要将那些元素提供给您希望更改的setState而不是其他元素,因此您只需要

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

setState执行合并,因此如果密钥存在,则其值为更改,如果不存在则创建新的并且所有其他的保持原样。

为了将对象添加到setState数组,您可以执行以下操作

this.setState(prevState => ({
    exist: [...prevState.exist, {'some_other_key':123}]
}))

0
投票

试试const exist = {{a: 'abc'},{b: 'xyz'}}


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' }这就是传播运算符'......'的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.