Reactjs 如何使用map函数动态地设置react中的状态?
我使用以下方法使用map动态更新状态。但是,这不起作用,状态也不会改变。为什么这种方法无效?应该有什么替代方法Reactjs 如何使用map函数动态地设置react中的状态?,reactjs,state,Reactjs,State,我使用以下方法使用map动态更新状态。但是,这不起作用,状态也不会改变。为什么这种方法无效?应该有什么替代方法 values= ['test1', 'test2','test3'] // The array could contain anything this.setState({ events: [ ...events, values.map((value) => { re
values= ['test1', 'test2','test3'] // The array could contain anything
this.setState({
events: [
...events,
values.map((value) => {
return {
title: value,
start: this.state.start,
end: this.state.end,
};
}),
],
});
我可能错了,但在我看来,您只是缺少了
values.map(…)
由于values.map(…)
返回一个数组,并且看到您传播事件,我猜您也希望传播映射的值。如果我误解了什么,请让我知道,我们可以进一步调查
另外,除非您从先前的状态(在您没有粘贴到此处的代码中)对事件进行了分解,否则您可能希望将其称为this.state.events
编辑:
更详细地解释了为什么spread operator是解决方案:
在状态中
属性事件
是一个对象数组。因此,当您更改它的值时,它必须再次是一个对象数组
也许最重要的细节是values.map
返回一个数组
事件
是对象的数组。这同样适用于值.map
因此,[events,values.map]
将是一个包含两个数组的数组,一个位于位置0,另一个位于位置1
但您需要的是对象数组,而不是数组数组。因此,你必须传播它们
我希望现在更清楚了。如果您还有任何问题,请随时提问。是的,您的解决方案有效。你能再解释一下为什么我们必须在map函数中使用spread操作符吗?当然,我没有理解逻辑!我已经用更详细的解释编辑了我的主要帖子,因为我真的无法在评论中格式化。
this.setState({
events: [
...events,
...values.map((value) => {
return {
title: value,
start: this.state.start,
end: this.state.end,
};
}),
],
});