处理ngrx/redux减速器功能中的错误/故障
我的问题涉及redux,更具体地说,是如何处理reducer函数中的错误/故障。我参考的是ngrx示例应用程序()及其处理错误/故障的方式 以下是我所指的减速器功能:处理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
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调用。当用户添加图书时,图书将在存储中本地添加,然后将图书发送到服务器,当服务器无法将其保存到数据库时(添加图书失败),我们需要将其从存储中删除。