处理ngrx/redux减速器功能中的错误/故障

处理ngrx/redux减速器功能中的错误/故障,redux,ngrx,ngrx-effects,Redux,Ngrx,Ngrx Effects,我的问题涉及redux,更具体地说,是如何处理reducer函数中的错误/故障。我参考的是ngrx示例应用程序()及其处理错误/故障的方式 以下是我所指的减速器功能: export function reducer(state = initialState, action: collection.Actions): State { switch (action.type) { case collection.ActionTypes.LOAD: { return Objec

我的问题涉及redux,更具体地说,是如何处理reducer函数中的错误/故障。我参考的是ngrx示例应用程序()及其处理错误/故障的方式

以下是我所指的减速器功能:

export function reducer(state = initialState, action: collection.Actions): State {
  switch (action.type) {
    case collection.ActionTypes.LOAD: {
      return Object.assign({}, state, {
        loading: true
      });
    }

    case collection.ActionTypes.LOAD_SUCCESS: {
      const books = action.payload;

      return {
        loaded: true,
        loading: false,
        ids: books.map(book => book.id)
      };
    }

    case collection.ActionTypes.ADD_BOOK_SUCCESS:
    case collection.ActionTypes.REMOVE_BOOK_FAIL: {
      const book = action.payload;

      if (state.ids.indexOf(book.id) > -1) {
        return state;
      }

      return Object.assign({}, state, {
        ids: [ ...state.ids, book.id ]
      });
    }

    case collection.ActionTypes.REMOVE_BOOK_SUCCESS:
    case collection.ActionTypes.ADD_BOOK_FAIL: {
      const book = action.payload;

      return Object.assign({}, state, {
        ids: state.ids.filter(id => id !== book.id)
      });
    }

    default: {
      return state;
    }
  }
}
有人能解释一下在减速器功能中处理这两个动作的必要性吗:

  • REMOVE\u BOOK\u失败
  • ADD\u BOOK\u FAIL
例如,为什么要将书本从状态中删除(在
ADD\u book\u FAIL
操作的情况下)


如果添加书本操作失败,则该书本不在存储中。是吗?

也许是使用的命名让它成为了一个麻烦,我的猜测是ADD\u BOOK\u FAIL可能会在其他地方用于不同的用例,作为一种回退机制


我同意你描述它的方式这没有意义,开发人员就是出于这个原因做的。

我不确定,但可能是因为api调用。当用户添加图书时,图书将在存储中本地添加,然后将图书发送到服务器,当服务器无法将其保存到数据库时(添加图书失败),我们需要将其从存储中删除。