因此,在我的商店中,每个fruitId
我有多个状态,每个fruitId
都有一个isDirty
状态。然后,我有RESET_DIRTY
和fruitId
两项操作,RESET_ALL
。以下代码有效。但我想我想知道是否有办法用combineReducers
做到这一点,以便我可以清理这种模式?
我的商店现在看起来像这样,我想知道如何
function fruits(state = {}, action) {
return {
isDirty: isDirty(state.isDirty, action)
}
}
function isDirty(state = false, action) {
switch (action.type) {
case ActionTypes.RESET_DIRTY:
return false;
default:
return state;
}
}
export default function fruitStore(state = {}, action) {
if (!action.type.startsWith('fruits')) {
return state;
}
const { fruitId } = action;
const { currentFruit } = fruitId ? {
[fruitId] : fruits(state[fruitId], action)
} : {};
let newState = Object.assign({}, state, currentFruit);
switch (action.type) {
case ActionTypes.RESET_DIRTY_ALL:
newState = Object.assign({}, newState);
Object.keys(newState).forEach((key) => {
newState[key].isDirty = false;
});
return newState;
default:
return newState;
}
}
答案 0 :(得分:0)
清理Redux有很多很棒的模式,但使用 Ducks 是我最喜欢的。 Github上的这个repo为您提供了如何以这种方式构建文件的简要说明: