我在我的Redux應用程序中有一種情況,我現在有3個單獨的reducers來處理從api獲取數據。我減速的一個的一個例子是:Redux可以在單獨的減速器中使用一種動作類型嗎?
const INITIAL_STATE = {
data: [],
loading: false,
error: ''
};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case GET_ALL_ORDERS_START:
return {
...state,
loading: true
};
case GET_ALL_ORDERS_SUCCESS:
return {
...state,
allOrders: action.payload,
loading: false
};
case GET_ALL_ORDERS_FAIL:
return {
...state,
loading: false,
error: action.payload
};
default:
return state;
}
};
注意加載和錯誤狀態,這些都是在每個電流降低相同的,將是任何後續減速器我寫的,涉及從API取數據。
我想添加一個僅用於加載和錯誤狀態的進一步減速器。其他3個將存儲數據。
這會給我:
數據減速器×3
const INITIAL_STATE = {
data: []
// any other state in the future
};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case GET_ALL_ORDERS_SUCCESS:
return {
...state,
allOrders: action.payload
};
default:
return state;
}
};
加載/錯誤減速器(負責處理整個應用程序加載/錯誤)
const INITIAL_STATE = {
loading: false,
error: ''
};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case GET_ALL_ORDERS_START:
return {
...state,
loading: true
};
case GET_ALL_ORDERS_SUCCESS:
return {
...state,
loading: false
};
case GET_ALL_ORDERS_FAIL:
return {
...state,
loading: false,
error: action.payload
};
default:
return state;
}
};
正如你可以看到這個手段GET_ALL_ORDER_SUCCESS動作類型將在2個單獨的縮減器中使用。我的問題是,這可以嗎?還是違背慣例?
非常感謝提前。
感謝@julianljk我已經實現瞭解決方案,它似乎運作得很好,但我只是想澄清在稍後的階段,它不會在@英鎊的價位上咬我。 – mtwallet
有一個折衷的方法,一個單一的操作,不會顯式調試,如果你關心日誌記錄,就更難調試。多個行動更明確。我認爲它關於找到一個餘額 – julianljk
絕對。有關該主題的更多詳細信息,另請參閱http://redux.js.org/docs/faq/Actions.html#actions-reducer-mappings和http://redux.js.org/docs/recipes/StructuringReducers.html。 – markerikson