reactjs 无法将新数据添加到包含数组的状态[已关闭]

wfveoks0  于 2023-04-20  发布在  React
关注(0)|答案(2)|浏览(149)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由一个错字或一个无法再复制的问题引起的。虽然类似的问题可能是on-topic在这里,但这个问题的解决方式不太可能帮助未来的读者。
5天前关闭。
Improve this question
我有:

[state, setState] = useState([
{ 
item: apple,
color: red,
},{ 
item: banana,
color:yellow,
}])

我想在数组中添加以下内容:

{ 
item: grape,
color: purple
}

我试过了

setState((prevState) => ({ ...prevState,  newObj }))

setState({ state: state.concat(newObj) });

但数据未添加到状态

fwzugrvs

fwzugrvs1#

你试过的两种方法几乎都是正确的,但不完全正确。

// your updating the state to an object and not an array
setState((prevState) => ({ ...prevState,  newObj }))
// Instead you should be spreading onto an array
setState((prevState) => ([ ...prevState,  newObj ]))

另一种方式也是类似的问题。

// Your setting the state to an object which contains the property state
setState({ state: state.concat(newObj) });
// update the state to an array of the concat array
setState(state.concat(newObj));

有关正确更新数组状态的更多信息,请参见https://react.dev/learn/updating-arrays-in-state

fae0ux8s

fae0ux8s2#

你有一个元素数组作为你的初始状态,但是后来你要把一个对象设置为一个新的状态。为了添加新的数据,你必须使用数组(方括号):

setState((prevState) => ([ ...prevState,  newObj ]));

相关问题