首页 > 解决方案 > 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 方法添加新用户,但这不是一个好的解决方案。我该怎么做?

标签: angularngrxngrx-store

解决方案


尝试使用扩展运算符,因为它会创建一个新的用户数组并且不会改变先前的数组。

users: [...state.users, action.payload]

或者对数组使用@ngrx/entity模块。这是最好的方法。

更新 13.07.2019

NgRx 8 中提供了新模块@ngrx/data。该模块有助于为具有零样板的数组创建 CRUD 存储。


推荐阅读