reactjs - 在反应减速器中将数据添加到复杂状态
问题描述
我有一个管理以下状态的反应减速器
const exampleState: INote[][] = [
[
{ x: 3, y: 5, value: '4' },
{ x: 3, y: 6, value: '4' },
],
[
{ x: 7, y: 3, value: '4' },
{ x: 8, y: 5, value: '7' },
{ x: 8, y: 5, value: '6' }
],
];
所以一个包含特定类型对象数组的二维数组。出于某种原因,我无法弄清楚如何更新这种状态。我特别希望能够将 INote 的新实例(不改变原始状态)添加到特定的嵌套数组中。我怎样才能做到这一点?我需要将对象添加到的数组的索引在我的 reducers 操作对象中
解决方案
好吧,显而易见的方法是不可变地更新这个状态,例如,假设我有一个ADD_NOTE
动作,它可能看起来像这样:
{type: "ADD_NOTE", payload: { item: INote, index: number }}
然后,此操作的 reducer 的示例返回语句将是:
return state.map((arr, i) => i === index ? [...arr, item] : arr)
这将更新数组,并将item
使用提供的操作索引添加到数组的末尾。
另一个可能让您的生活更轻松的解决方案是使用帮助库,例如https://github.com/kolodny/immutability-helper或https://github.com/immerjs/immer
推荐阅读
- ansible - ansible 遍历字典和列表
- r - 空模型无法在 AICc 分析中收敛
- html - SVG 文件的剪切路径
- python - 手动设置 scipy 稀疏矩阵形状的含义
- vba - 如何使用excel vba删除除单词和日期之外的所有内容
- javascript - 用户模型的安全返回盐数据吗?
- wordpress - Wordpress 和 AWS API Gateway 连接?
- css - 在 flexbox 内按比例缩放画布
- linux - 使用 awk 更改 no_proxy 环境变量值
- python-3.x - 我正在为每个 /profile/url 生成一个个人资料页面。我怎样才能只为我的网站上的帐户生成一个页面?