Reactjs 如何使用map函数动态地设置react中的状态?

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

我使用以下方法使用map动态更新状态。但是,这不起作用,状态也不会改变。为什么这种方法无效?应该有什么替代方法

    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,
              };
            }),
          ],
        });