Сброс состояния Redux до неопределенного или начального состояния, кроме одного состояния - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть магазин с избыточностью, где я определил все приложения с помощью combReducers. То, чего я хочу достичь, это то, что я хочу сбросить все состояние до неопределенного, кроме одного состояния, когда пользователь выходит из системы. Пример ниже работает нормально, но что, если у меня более 8 состояний, у меня будет длинный код. Есть ли способ, где я могу упростить это, возможно, l oop через 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 Ответ

1 голос
/ 15 февраля 2020

Каждый раз, когда вы изменяете состояние в избыточном, он будет возвращать новый объект состояния, поэтому, если вы хотите очистить все состояния, просто

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

Если вы хотите сохранить только состояние с ключом ' persist '

вы можете просто вернуть

if (action.type === 'LOGOUT') {
  return { num4: state.num4 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...