import React from 'react'; import ReactDOM from 'react-dom'; import { createStore, applyMiddleware, compose } from 'redux' import { Provider } from 'react-redux' import { BrowserRouter as Router } from 'react-router-dom' import thunk from 'redux-thunk' import logger from 'redux-logger' import rootReducers from './store' import App from './App' import {persistStore, persistReducer} from 'redux-persist'; import storage from 'redux-persist/lib/storage'; import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2'; import {PersistGate} from 'redux-persist/lib/integration/react'; const persistConfig = { key: 'root', storage, stateReconciler: autoMergeLevel2 // 查看 'Merge Process' 部分的具体情况 }; const myPersistReducer = persistReducer(persistConfig, rootReducers) const reduxDevToolOptions = process.env.REACT_APP_BUILD_ENV === 'production' ? {} : { trace: true, traceLimit: 25 } const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(reduxDevToolOptions) || compose; const store = createStore( myPersistReducer, composeEnhancers( applyMiddleware(thunk, logger) ) ) const persistor = persistStore(store) ReactDOM.render( <Provider store={store}> <PersistGate loading={null} persistor={persistor}> <Router> <App/> </Router> </PersistGate> </Provider>, document.getElementById('root'));