javascript - 如何从 redux 的嵌套结构中创建/编辑/删除?
问题描述
我正在逐行渲染表格中的嵌套数据。下面是一个简单的结构示例:
[
{
id: 1,
children: [
{
id: 2,
children: []
},
{
id: 3,
children: [
{
id: 4,
children: []
},
{
id: 5,
children: []
}
]
}
]
},
{
id: 6,
children: []
},
{
id: 7,
children: [
{
id: 8,
children: [
{
id: 9,
children: []
}
]
}
]
}
]
如果我想在下创建一个新孩子id: 2
,那么它来自
{
id: 2,
children: []
}
至
{
id: 2,
children: [
{
id: 10,
children: []
}
]
}
在这种情况下更新状态的正确方法是什么?我是否只是克隆整个数组并找到将有一个新孩子的 id 并将其放入它的 children[] 中,然后返回那个新的克隆数组?如果它是一个巨大的数组怎么办?
解决方案
使用 Redux,您必须以不可变的方式更新状态。你基本上有两个选择:
使用ES6 扩展运算符
Object.assign
或从当前状态对象生成新对象:请参阅不可变更新模式(Redux 文档)使用为您执行此操作的多个库之一,我建议使用Immer,但还有其他选项,例如immutablejs。
我真的很喜欢 Immer,因为它允许我编写干净且易于阅读/维护的减速器。甚至你也可以对它使用变异方法。
推荐阅读
- google-kubernetes-engine - 在安装了 jdk 而不是 jre 的谷歌 kubernetes 引擎上部署 spring-boot 应用程序
- python - 使用 python 从现有的 sql 查询中提取数据库模式
- django - /success 处的 ValueError django EmailMultiAlternatives 中的地址无效
- survey - 我可以在surveymonkey 中回答两次相同的调查吗?
- javascript - 为什么画线没有从画布上清除?
- powershell - New-ExoPSSession:索引超出范围
- python - 迭代时如何从系列对象创建数据框
- php - 使用配置 PHP 文件和 PHP Mailer 将电子邮件发送到多个地址
- excel - 由变量获取的列或行参数 (R1C1)。VBA
- c++ - 这两个内存位置有什么区别?