reactjs - 如何使用 map 函数动态响应 setState?
问题描述
我正在使用以下方法使用 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(...)
this.setState({
events: [
...events,
...values.map((value) => {
return {
title: value,
start: this.state.start,
end: this.state.end,
};
}),
],
});
因为values.map(...)
返回一个数组,并且看到你 spread events
,我猜你希望映射值也被传播。如果我对某些事情有误解,请告诉我,我们可以进一步调查。
此外,除非您events
之前从状态中解构(在您未在此处粘贴的代码中),否则您可能希望将其称为this.state.events
.
编辑:
关于为什么扩展运算符是解决方案的更详细解释:
在您state
的属性events
中是一个对象数组。因此,当您更改它的值时,它必须再次是一个对象数组。
也许最重要的细节是values.map
返回一个数组。
events
是一个对象数组。对于values.map
.
[events, values.map]
一个包含两个数组的数组也是如此,一个在位置 0,另一个在位置 1。
但是你想要一个对象数组,而不是数组数组。因此,您必须同时传播它们。
我希望现在更清楚了。如果您还有其他问题,请随时提问。
推荐阅读
- java - 如何将 gif 图像显示为表盘磨损操作系统
- django - 在 django 模板中显示单个图像字段不起作用?
- r - 使用 R 中的 formattable() 格式化表格中的文本
- computer-science - 计算机以 32 位为一组表示信息
- python - 约束 QGraphicsItems 组的成员在一个方向上共享彼此的动作
- sql - 没有子查询的表的多次传递
- python - 神经网络似乎无法学习
- reactjs - React Native 在一个平面列表中呈现标签列表,彼此相邻
- php - 如何在 Visual Studio Code 中的 PHP 函数/类/变量中显示数字引用
- c# - 更改 dateTime 的 get 和 set 属性