热重载时Create-React-App失去Redux存储状态

Lit*_*ain 5 javascript reactjs redux hot-module-replacement create-react-app

我已经使用Create-React-App创建了一个应用程序,并且热重装工作正常,但是Redux状态丢失了。如果我编辑任何组件(例如,更改标题),则状态会丢失-最令人讨厌的是,由于该状态中存储的令牌丢失,用户已注销。我已经遵循了各种示例,包括(https://redux.js.org/recipes/configuring-your-store),并且无法弄清这里出了什么问题。

有什么想法我错过了吗?谢谢!

index.js

const renderApp = () => {
    ReactDOM.render(
        <App />, document.getElementById('root')
    );
};

if (process.env.NODE_ENV !== 'production' && module.hot) {
    module.hot.accept('./App', renderApp);
}

renderApp();
Run Code Online (Sandbox Code Playgroud)

store.js

const inititalState = {};

const store = createStore(
    rootReducer, 
    inititalState, 
    compose(applyMiddleware(thunk), 
        window.__REDUX_DEVTOOLS_EXTENSION__&& window.__REDUX_DEVTOOLS_EXTENSION__()));

if (process.env.NODE_ENV !== 'production' && module.hot) {
    module.hot.accept('./reducers', () => store.replaceReducer(rootReducer));
}

export default store;
Run Code Online (Sandbox Code Playgroud)

reducers / index.js

import { combineReducers } from 'redux';
import errorReducer from './errorReducer';
import authReducer from './authReducer';

export default combineReducers({
    'errors': errorReducer,
    'auth': authReducer,
});
Run Code Online (Sandbox Code Playgroud)

App.js:

class App extends Component {
    render() {
        return (
            <Provider store = { store }>
                <Router>
                    <div>
                        <Navbar />
                        <Route exact path="/" component={ Home } />
                        <div className="container">
                            <Route exact path="/register" component={ Register } />
                            <Route exact path="/login" component={ Login } />
                            <Route exact path="/forgotpassword" component={ ForgotPassword } />
                        </div>
                    </div>
                </Router>
            </Provider>
        );
    }
}

export default App;
Run Code Online (Sandbox Code Playgroud)

从package.json中:

  "dependencies": {
    "bootstrap": "^4.2.1",
    "classnames": "^2.2.6",
    "jquery": "^3.3.1",
    "jwt-decode": "^2.2.0",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-redux": "^6.0.0",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.1.2",
    "reactstrap": "^7.0.2",
    "redux": "^4.0.1",
    "redux-thunk": "^2.3.0",
    "updeep": "^1.1.0"
  },
Run Code Online (Sandbox Code Playgroud)

ane*_*rco 0

看看redux-persist库,保存你的 redux 状态然后重新水化它。