2017-03-01 6 views
0

私の質問はreduxに関連し、より具体的には、減速関数内のエラー/失敗の処理方法に関するものです。私はngrxのサンプルアプリケーション(https://github.com/ngrx/example-app)とエラー/失敗の処理方法を参照しています。ngrx/redux reducer関数のエラー/失敗の処理

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_BOOK_FAIL
  • ADD_BOOK_FAILここ

    は、私が言及していますリデューサ機能です

たとえば、状態から書籍を削除する理由(ADD_BOOK_FAILの場合)

ブックの追加アクションが失敗した場合、ブックはストアに存在しません。それは...ですか?

+1

私はよく分かりませんが、API呼び出しの可能性があります。ユーザーが本を追加すると、ブックはサーバーに送信されるよりも、ストアにローカルに追加され、サーバーがデータベース(ADD_BOOK_FAIL)に保存できないと、ストアから削除する必要があります。 – disstruct

答えて

1

名前が付けられていて、赤ちゃんになっているかもしれませんが、私は、ADD_BOOK_FAILが、フォールバックメカニズムとして別のユースケースで使用されている可能性があると考えています。

私はあなたがこれを説明する方法に同意します。これは、開発者がこの理由でそれをしたことを意味しません。

関連する問題