将Redux状态重置为未定义状态或初始状态(一种状态除外)

时间:2020-02-15 12:39:44

标签: reactjs redux

我有一个redux存储,其中已使用CombineReducers定义了所有应用程序。我要实现的是,我要在用户注销时将除一个状态以外的所有状态重设为未定义。 下面的示例工作正常,但是如果我有8个以上的状态,我将得到长长的代码。有什么方法可以简化此过程,也许可以遍历appReducers?

const appReducer = combineReducers({
        num1,
        num2,
        num3,
        num4,
        ...createForms({})
    });
const rootReducer = (state, action) => {
if (action.type === 'LOGOUT') {
    delete state.num1;
    delete state.num2;
    delete state.num3;
}

return appReducer(state, action) // this will always return num4 state.
}

1 个答案:

答案 0 :(得分:1)

每次在redux中修改状态时,它将返回新的状态对象, 因此,如果您想清除所有状态,则只需

if (action.type === 'RESET') {
  return undefined
}

如果您只想使用键“ persist”坚持状态

您只需返回

if (action.type === 'LOGOUT') {
  return { num4: state.num4 }
}