reactjs - 在归一化数据中使用 immer 和 es6 更新 redux 存储中的部分对象(嵌套)
问题描述
我有一家具有全局更新操作的商店
我只想更新部分数据,我没有获得可以再次标准化的完整数据
我的商店是:
{
store:{
studentes:{
"1": {
"name": {
"second": "xxx",
"third": "bbbbb"
}
"age": 60
}
}
}
}
在标准化数据后初始化
现在我只想更新年龄
如何使用 Es6 或 immer 实现这一目标?
我不想传递对象中的每个变量并更新如下:
inside student reducer:
draft[id].name.secondName = "boo"
draft[id].name.thirdName = "xx"
我试过这样:
return draft = {..draft ,...data}
但这将替换所有对象
我的服务器响应是这样的:
"data":{
"name" : {
"second" :"dddd"
}
}
这里我只得到了部分内部数据
这是一个很大的对象。所以我正在寻找通用的更新
解决方案
因为我们在 ES6 中有对象解构,你可以使用它。
let draft = {
...draft,
name: {
...draft.name,
second: 'joe'
}
}
因此,通过这种方式,实际值draft
将首先插入新变量中。然后来到name
键,...draft.name
将所有值插入draft.name
到该键的值中,除了second
将具有 value的键'joe'
。
推荐阅读
- laravel - Laravel Spatie Markdown,如何更改渲染过程?
- swift - 我的地图没有显示来自我的 JSON 文件的注释(UIKit / Swift /MapKit)
- api-platform.com - 在 DataProvider 中检索多个标识符的值
- esp8266 - main.py 在 esp8266 板上无限循环运行
- python - 在同一个 y 刻度内绘制多个水平条
- react-native - 如果我将绝对位置赋予 View,则 React Native PenResponder 不起作用
- python - 如何将一列转换为熊猫中的列表列?
- java - 为什么 for 循环中的 if 条件不运行?
- android - 为 EAP-TLS 安装 CA 证书时出错
- swiftui - SwiftUI 在 UITextField 添加填充以在焦点处的键盘之间留出空间