Интеграция Redux Pesist не работает с Redux, как ожидалось? - PullRequest
0 голосов
/ 11 ноября 2019

Я пытался интегрировать redux-persist с redux и redux-saga для получения автономной поддержки pwa. Возможно, это связано с неправильной интеграцией redux persist.

Здесь мое состояние не сохраняется при переходе в автономный режим.

Есть ли более простой способ для сохранения состояния в редуксе.

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { HashRouter } from 'react-router-dom';
import { createStore, applyMiddleware, compose } from "redux";
import { persistStore, persistCombineReducers } from 'redux-persist';
import storage from 'redux-persist/es/storage';
import { Provider } from "react-redux";
import createSagaMiddleware from "redux-saga";
import { PersistGate } from 'redux-persist/integration/react'

import './index.css';
import App from './App';

// ServiceWorker
import registerServiceWorker from './registerServiceWorker';

// Saga
import {
    watchApp,
    watchLogin,
} from "./store/sagas";

//   Reducers
import loginReducer from './store/reducers/login';
import appReducer from './store/reducers/app';

const composeEnhancers =
    process.env.NODE_ENV === "development"
        ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
        : null || compose;

/* Redux-Persist */
const rootPersistReducer = persistCombineReducers({
        key: 'root',
        storage,
    },{
        app: appReducer,
        login: loginReducer,
    });
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
    rootPersistReducer,
    composeEnhancers(applyMiddleware(sagaMiddleware)),
);

/* Redux-Persist + Store */
export const persistor = persistStore(store);

sagaMiddleware.run(watchApp);
sagaMiddleware.run(watchLogin);

const app = (
    <Provider store={store}>
        <PersistGate loading={null} persistor={persistor}>
            <HashRouter>
                <App />
            </HashRouter>
        </PersistGate>
    </Provider>
)
ReactDOM.render(app, document.getElementById('root'));
registerServiceWorker();
...