Итак, я следовал учебному пособию, чтобы сохранить состояние избыточности в локальном хранилище.https://egghead.io/lessons/javascript-redux-persisting-the-state-to-the-local-storage
Однако, что если я создам свой магазин следующим образом с редукторами:
const store = createStore(rootReducer, initialState)
И корневой редуктор представляет собой комбинированные редукторы:
const rootReducer = combineReducers({
auth: AuthStore,
content: contentReducer,
pages: pageReducer,
}
И каждый редуктор имеет свое собственное состояние / initialState, например, contentReducer создается следующим образом:
const initialState = {selected, search}
const contentReducer = (state = initialState, action) => {
switch (action) {
case SELECT :
return {
...state,
selected: action.payload
case SEARCH:
return {
...state,
search: action.payload
}
}
}
Если я буду следовать учебному пособию, тогда я могу сделать
const saveSelected = (state) => {
try {
const serializedSelected = JSON.stringify(state);
localStorage.setItem('selected', serializedSelected)
} catch (err){
console.log(err)
}
}
store.subscribe(() => {
saveSelected(store.getState().content.selected)
})
Однако, поскольку у меня естьмного других редукторов (я приведу только несколько примеров выше) и, следовательно, в хранилище отправлено много действий, я не хочу, чтобы магазин продолжал запускать функцию подписки каждый раз, когда отправляется какое-либо действие.Я хочу, чтобы магазин подписывался на изменения только при обновлении конкретного store.getState().content.selected
.Как я могу это сделать?