我有多个reducer,我在redux应用程序中将它们组合在一起。
const reducers = combineReducers({
reducer1,
reducer2,
reducer3
});
当用户执行注销时,如何删除此用户的整个redux状态?
答案 0 :(得分:4)
单击“注销”时,会发送一个简单的操作,例如" CLEAR_ALL"这可以在所有减速器的开关情况下添加,并从那里可以返回空状态或初始状态。从而清除商店中的所有值。
答案 1 :(得分:2)
答案很简单创建一个动作让我们称之为" CLEARSTORE"。
在reducer中通过返回一个空对象来处理此操作。
export function CLEARSTORE(){
return {
type:"CLEARSTORE"
};
}
reducer.js
const appReducer = combineReducers({
/* your app’s top-level reducers */
})
const rootReducer = (state, action) => {
if (action.type === 'CLEARSTORE') {
state = undefined
}
return appReducer(state, action)
}
答案 2 :(得分:0)
多个Reducer可以在Redux中处理相同的操作。
这是完全正常的,实际上非常方便,因为您可能希望状态树的不同部分以不同的方式对事件做出反应。在注销的情况下,每个reducers都可以返回它所处理的状态树的不同默认值。
我通常处理注销的是分派一个动作,例如:RESET_STATE
,让所有减速器对它做出反应。
您可能希望了解Redux作者如何处理多个Reducer之间的相同操作。