当我有多个reducer时,如何在用户注销时删除所有状态

时间:2018-05-14 02:11:03

标签: reactjs redux

我有多个reducer,我在redux应用程序中将它们组合在一起。

const reducers = combineReducers({
  reducer1,
  reducer2, 
  reducer3
});

当用户执行注销时,如何删除此用户的整个redux状态?

3 个答案:

答案 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之间的相同操作。

https://github.com/reduxjs/redux/issues/601