Вложенный Redux персистор - PullRequest
0 голосов
/ 09 марта 2020

У меня есть магазин Redux с такой структурой:

{ui: {
    drawer: false,
    dialog: false
    },
other_0: {
    other_0_0: false,
    other_0_1: 'and'
    },
other_1: {
    other_1_0: null,
    other_1_1: true
    }
}

Я бы хотел сохранить только ящик для ключей.

Пока мой код:

import { applyMiddleware, combineReducers, createStore } from "redux";
import thunk from "redux-thunk";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage";
import logger from "redux-logger";
import other_0_reducer from "./other_0_reducer";
import other_1_reducer from "./other_1_reducer";
import ui_reducer from "./ui_reducer";

const rootReducer = combineReducers({
  other_0: other_0_reducer,
  other_1: other_1_reducer,
  ui: ui_reducer,
});

const pConfig = {
  key: "root",
  storage: storage,
  whitelist: ["ui"]
};

const pReducer = persistReducer(pConfig, rootReducer);

const store = createStore(pReducer, applyMiddleware(thunk, logger));
let persistor = persistStore(store);

export { store, persistor };

Это сохраняет в силе родительский ключ "ui", но в действительности я хотел бы занести в черный список дочерний "диалог".

Это в основном вложенный персистор: я смотрел другие статьи о StackOverflow, но не могу заставить его работать. Может кто-то мне помочь, пожалуйста? Спасибо!

1 Ответ

1 голос
/ 09 марта 2020

Вы можете сохранить каждый редуктор отдельно.

import { applyMiddleware, combineReducers, createStore } from "redux";
import thunk from "redux-thunk";
import { persistStore, persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage";
import logger from "redux-logger";
import other_0_reducer from "./other_0_reducer";
import other_1_reducer from "./other_1_reducer";
import ui_reducer from "./ui_reducer";

const uiPersistConfig = {
  key: "ui",
  storage: storage,
  whitelist: ["drawer"]
}

const rootReducer = combineReducers({
  other_0: other_0_reducer,
  other_1: other_1_reducer,
  ui: persistReducer(uiPersistConfig, ui_reducer)
});

const pConfig = {
  key: "root",
  storage: storage,
  whitelist: []
};

const pReducer = persistReducer(pConfig, rootReducer);

const store = createStore(pReducer, applyMiddleware(thunk, logger));
let persistor = persistStore(store);

export { store, persistor };

Надеюсь, это поможет.

...