私はフロントエンドアプリケーションを作成した経験はほとんどありません。Reduxを使用しているときには、自分自身でいくつかの慣習を確立したいと考えています。このように非同期アクション用のレデューサーを設計すると、どのような問題が発生しますか?
const initialState = {
isRunning: false,
isFinished: false,
hasError: false,
response: null
};
export const updatePostReducer = (state = initialState, action=null) => {
switch (action.type) {
case UPDATE_POST:
return {
isRunning: true,
isFinished: false,
hasError: false,
response: null
};
break;
case UPDATE_POST_SUCCESS:
return {
isRunning: false,
isFinished: true,
hasError: false,
response: action.payload
};
break;
case UPDATE_POST_ERROR:
return {
isRunning: false,
isFinished: false,
hasError: true,
response: null,
statusCode: action.statusCode
};
case UPDATE_POST_INVALIDATE:
return initialState;
break;
default:
return state;
}
};
は、上記のアプローチには問題ありませんが、私は、「プロセス・ステージ」混乱を見つける:
は現在、非同期アクションのための私の減速は、このように見えます。場合は、よそ代わりに不潔で)それがスイッチを(使用することが可能です
- :私は後者のアプローチを使用して2つの利点を参照してください
// IMPORTED FROM SEPARATE FILE const stage = { INITIAL: "INITIAL", RUNNING: "RUNNING", FINISHED: "FINISHED", ERROR: "ERROR" }; const initialState = { stage: stage.INITIAL, response: null }; export const updatePostReducer = (state = initialState, action=null) => { switch (action.type) { case UPDATE_POST: return { stage: stage.RUNNING, response: null }; case UPDATE_POST_SUCCESS: return { stage: stage.FINISHED, response: action.payload }; case UPDATE_POST_ERROR: return { stage: stage.ERROR, response: null, statusCode: action.statusCode }; case UPDATE_POST_INVALIDATE: return initialState; default: return state; } };
:そのため、私のアイデアはそれを短縮することです
欠点は以下のとおりです。
- これは、どこでもstages.jsをインポートする必要があります。
- 段階のきめ細かな制御
は、私の質問は何もありません:段階のきめ細かな制御がありませんがあるので、いくつかのシナリオでは、この問題を引き起こすが、だろうか?たとえば、hasError=true, isRunning=true
を同時に使用する必要がある場合がありますか?