angular - Angular 6 ngrx,如何将新项目添加到状态对象的数组中?
问题描述
我有一个简单的情况,我有像 CreatUser、CreateSuccess、CreateFail 这样的操作。我应该如何将新对象添加到数组以及何时Create
调度操作CreateSuccess
?我该怎么做?
export function reducer(state = init, action: Actions): State {
switch (action.type) {
case ActionsTypes.CREATE:
return {
...state,
inProgress: true
};
case ActionsTypes.CREATE_SUCCESS:
return {
...state,
users: state.users.push(action.payload),
inProgress: false
};
case ActionsTypes.CREATE_FAIL:
return {
...state,
error: action.payload,
inProgress: false
};
default:
return state;
}
在上面的代码中,我尝试使用 push 方法添加新用户,但这不是一个好的解决方案。我该怎么做?
解决方案
尝试使用扩展运算符,因为它会创建一个新的用户数组并且不会改变先前的数组。
users: [...state.users, action.payload]
或者对数组使用@ngrx/entity模块。这是最好的方法。
更新 13.07.2019
NgRx 8 中提供了新模块@ngrx/data。该模块有助于为具有零样板的数组创建 CRUD 存储。
推荐阅读
- cordova - ios 13 中没有为 ionic 3 应用程序设置 cookie
- reactjs - 测试 React Hooks 的最佳库是什么?
- flutter - Flutter 将小部件对齐到中心,另一个对齐到右侧 - 不可能
- javascript - 反应:警告:失败的道具类型:无法读取未定义的属性“应用”
- ios - RxSwift。订阅发生两次
- haskell - foldMap :: (Monoid m) => (a -> m) -> fa -> m 类型是什么意思以及如何实现它?
- r - acf 函数和 ggAcf 函数给出不同的结果
- vba - 访问 vba msado 参考中的路径错误
- swift - Swift 3 有没有办法将日期打印为 Date 而不是 String
- html - 如何单击使用 python 的 Selenium webdriver 标签创建的按钮?