Добрый день, подскажите, как добавить store redux в localstorage (на данный момент обнуляется при перезагрузке): store:
function configureStore(initialState) {
let createStoreWithMiddleware;
const middleware = process.env.__DEV__
? applyMiddleware(thunk, createLogger())
: applyMiddleware(thunk);
createStoreWithMiddleware = compose(
middleware,
);
const store = createStoreWithMiddleware(createStore, loadState())(rootReducer, initialState);
if (module.hot) {
module.hot
.accept('../reducer', () => {
const nextRootReducer = require('../reducer/index');
store.replaceReducer(nextRootReducer);
});
}
store.subscribe(() => {
saveState(store.getState().albums)
});
return store;
} export default configureStore
В первом приближении кажется так. Пишем middleware и подключаем. Но в целом я бы посмотрел в сторону redux-persist, redux-offline или других отработанных решений, так как тут как всегда много подводных камней
Кстати в вашем коде несколько непонятно как подключается middleware, зачем там compose, если в нём только одна функция. Если некие middleware нужно фильтровать, вот вариант как это сделать может быть несколько более элегантно. Также советую переименовать __DEV__ обратно в NODE_ENV, так как библиотеки (react), а также утилиты (npm, yarn, webpack) ожидают NODE_ENV=production при продакш сборке.
const persistMiddleware = ({ getState(), dispatch }) => next => action => {
const result = next(action);
localStorage.set('my-state', JSON.stringify(getState());
return result;
}
const middleware = [
thunk,
process.env.__DEV__&& createLogger,
persistMiddleware,
].Boolean();
const initialState = localStorage.getItem('my-state') || {};
const store = createStore(rootReducer, initialState, applyMiddleware(...middleware));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости