javascript - 数组内不可变的 redux 对象更新
问题描述
我有以下对象结构数组,并且基于 API 响应,我想向所有嵌套对象插入一个新的键值对。我在下面用我的解决方案改变嵌套对象吗?如果是,那么符合不可变更新模式的更好实现是什么?
减速机结构
[{
recordID: '4B6987A1-4179-426A-B38A-8B122995D0F8:ABPerson',
givenName: 'A',
middleName: '',
familyName: '',
phoneNumbers: [{ label: 'mobile', number: '12345679' }],
}]
传入数据结构
[{
recordID: '4B6987A1-4179-426A-B38A-8B122995D0F8:ABPerson',
givenName: 'A',
middleName: '',
familyName: '',
isUser: true, // the new key-value pair
phoneNumbers: [{ label: 'mobile', number: '12345679' }],
}]
我目前更新商店的方式
case GET_NON_USERS_SUCCESS: {
const newArr = state.inMemoryContact.map((record, index) => {
return {
...record,
...action.payload.getNonUsers[index]
};
});
return {
...state,
inMemoryContact: newArr
};
}
这是动作
const getNonUsersSuccess = data => ({
type: GET_NON_USERS_SUCCESS,
payload: data
});
解决方案
推荐阅读
- mysql - 两个表中的 SQL 查询(1-M)
- webforms - 编译错误:CS1056:将 Asp.net 网络表单发布到 Godaddy 共享服务器时出现意外字符“$”
- python - Google API invalid_grant / bad_request
- android - 为什么我不能用 GeckoView 完全渲染 html?
- reactjs - 无法分配无渲染组件
- c# - 异步代码、共享变量、线程池线程和线程安全
- mongodb - 如何启动mongo v4.2.0
- bootstrap-4 - Bootstrap 4 水平列表组刷新
- mysql - 尝试根据另一个值从 5 个不同的表中获取一个值
- vb.net - 将文本框行从升序到降序排序