Мотивация
Я хотел бы сохранить информацию о пользователе при обновлении / перенаправлении страницы, но также хочу очистить ее после выхода из системы.
<Ч />
Конфигурация
const rootReducer = combineReducers({productsReducer, auth: accessReducer, usersReducer});
const persistConfig = {
key: 'root',
storage,
whitelist: ['auth']
};
Я хочу сохранить данные только в accessReducer
, поэтому они занесены в белый список. Теперь я хочу обработать выход таким образом, чтобы все данные были сброшены. Для этого я создал logoutReducer:
Редуктор выхода из системы
export const logout = () => ({
type: 'USER_LOGOUT'
});
const logoutReducer = (state, action) => {
if(action.type = 'USER_LOGOUT'){
state = undefined;
}
return rootReducer(state, action);
};
Магазин и персистор
const persistedReducer = persistReducer(persistConfig, logoutReducer);
export const store = createStore(persistedReducer, applyMiddleware(thunk));
export const persistor = persistStore(store);
<Ч />
ПРОБЛЕМА
Как только я запускаю приложение, я получаю информацию о загрузке, которая поступает из <Loader/>
в PersistGate
:
<Provider store={store}>
<PersistGate loading={<Loader/>} persistor={persistor}>
...
</PersistGate>
</Provider>
ВОЗМОЖНАЯ ПРИЧИНА
Теперь я предполагаю, что это потому, что я передаю logoutReducer
, который имеет отношение только к другим редукторам, и именно поэтому конфигурация терпит неудачу. Как мне сохранить информацию о пользователе и сохранить трюк выхода из системы? Есть ли другое решение для этого? Любая помощь будет оценена ♥