Для создания сеанса я храню JWToken в localStorage (не самое безопасное место - я знаю).Чтобы позволить пользователю обновить окно браузера, я сохраняю пользовательское состояние в избыточном виде:
const getPersistedState = () => {
try {
const persistedToken = JSON.parse(localStorage.getItem('token'));
const persistedTimeStamp = JSON.parse(localStorage.getItem('authTimeStamp'));
if (persistedToken === null ||
persistedTimeStamp === null) {
return undefined
}
const persistedState = { user: { auth: {
token: persistedToken,
authTimeStamp: persistedTimeStamp,
authed: true,
}
}
}
return persistedState
} catch(e) {
return {}
}
}
const persistedState = getPersistedState()
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(
rootReducer,
persistedState,
composeEnhancers(applyMiddleware(thunk))
)
Моя проблема заключается в том, что все пользовательское состояние перезаписывается этим, если хранилище обновляется.Поэтому я не могу определить объект INITIAL_STATE
на моем пользовательском редукторе, потому что он будет мгновенно перезаписан.
Есть ли способ достичь постоянного состояния, которое может слиться с существующим состоянием, которое будетдай мне возможность определить INITIAL_STATE
?