В настоящее время я пытаюсь сохранить подмножество моего редукс-состояния в локальном хранилище. Я использовал документацию из Стартовый комплект PWA для реализации базового хранилища, которое пока работает нормально, но сохраняет только полное состояние в локальном хранилище.
Это не совсем то, что я хочу, потому что, как уже упоминалось, я хочу хранить только подмножество, например некоторые конкретные результаты действий (например, state.settings
вместо state
).
Каждая документация и примеры хранят только полное состояние, я не нашел ни одного комментария, который соответствует моим потребностям.
Моя текущая реализация
redux-store.js
import {
createStore,
applyMiddleware,
compose as origCompose,
combineReducers
} from 'redux';
import thunk from 'redux-thunk';
import { lazyReducerEnhancer } from 'pwa-helpers/lazy-reducer-enhancer';
import { loadState, saveState } from './redux-localstorage';
import applicationReducer from './reducers/application-reducer';
export const store = createStore(
(state, action) => state,
loadState(),
compose(lazyReducerEnhancer(combineReducers), applyMiddleware(thunk))
);
export default store;
store.addReducers({
applicationReducer
});
store.subscribe(() => {
saveState(store.getState());
});
редукс-localstorage.js
const STORAGE = '__RDX_STORAGE_TEST__';
export const saveState = state => {
const json = localStorage.getItem(STORAGE) || '{}';
const stringifiedNewState = JSON.stringify(state);
if (stringifiedNewState !== json && stringifiedNewState !== '{}') {
localStorage.setItem(STORAGE, stringifiedNewState);
}
};
export const loadState = () => {
const json = localStorage.getItem(STORAGE) || '{}';
const state = JSON.parse(json);
return state || undefined;
};
Итак, мой вопрос: возможно ли это вообще? Если да, то как я могу этого добиться?
Большое спасибо.