Я создал приложение с 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();
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;
редукторы / index.js
import { combineReducers } from 'redux';
import errorReducer from './errorReducer';
import authReducer from './authReducer';
export default combineReducers({
'errors': errorReducer,
'auth': authReducer,
});
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;
Из 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"
},