Я работаю над проектом React и использую Redux для управления состоянием.Я перехожу из ImmutableJS в Immer, и я не уверен, как вернуть исходное состояние с некоторыми изменениями.Я использовал слияние с ImmutableJS, но не знал, как это сделать с Immer.
Я искал везде и не мог найти ответ.Похоже, что установка черновика в исходное состояние, а затем внесение некоторых изменений не работает.
export const initialState = {
initializedAuth: false,
isAuthenticated: false,
user: null,
};
const authProviderReducer = (state = initialState, action) =>
produce(state, draft => {
switch (action.type) {
case AUTH_USER_NO_TOKEN:
draft.initializedAuth = true;
draft.isAuthenticated = false;
break;
case AUTH_UPDATE_USER_HAVE_TOKEN:
draft.initializedAuth = true;
draft.isAuthenticated = true;
break;
case AUTH_SUCCESSFUL_LOGIN:
draft.initializedAuth = true;
draft.isAuthenticated = true;
draft.user = action.payload;
delete draft.user.session;
break;
case AUTH_LOGOUT: {
// return initialState;
// draft = initialState; doesn't work
}
}
});
При AUTH_LOGOUT
я хочу вернуть исходное состояние и установить для свойства initializedAuth
значение true.
Используя Immutablejs, я смог сделать это так:
case AUTH_LOGOUT: {
return initialState.set('initializedAuth', true);
}