我在我的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