Я создаю приложение React с React-Router@4
и [email protected]
и Webpack@2^
.
Происходят странные вещи,
у меня есть маршруты, объявленные в файле routes.js
, как это
/* global __DEV__ */
import React from 'react';
import { Switch, Route, Link } from 'react-router-dom';
// import asyncRoute from './asyncRoute';
// const Welcome = asyncRoute(() => import('../views/Welcome'));
// const About = asyncRoute(() => import('../views/About'));
// const Topics = asyncRoute(() => import('../views/Topics'));
import Welcome from '../views/Welcome';
import About from '../views/About';
import Topics from '../views/Topics';
const Routes = ({ ...properties }) => {
return (
<div>
<div>
Dummy Links to check Code Splitting
<ul>
<li><Link to="/">Welcome</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/topics">Topics</Link></li>
</ul>
</div>
<Switch>
<Route exact path="/" component={Welcome} />
<Route path="/about" render={(props) => <h3>About</h3>} />
<Route path="/topics" component={Topics} />
</Switch>
</div>
);
}
export default Routes;
// This will enable/force Hot Module replacement on __DEV__ environment.
// if (__DEV__) {
// require('../views/Welcome');
// require('../views/About');
// require('../views/Topics');
// }
Мой Main.js
файл выглядит так,
import React from 'react';
import ReactDOM from 'react-dom';
import { AppContainer } from 'react-hot-loader';
import configureStore from './redux/configureStore';
const initialState = window.__INITIAL_STATE__;
const store = configureStore(initialState);
import './styles/main.css';
import Root from './views/Root';
function render(Root) {
ReactDOM.render(
<AppContainer>
<Root store={ store } />
</AppContainer>,
document.getElementById('root')
);
}
if (module.hot) {
module.hot.accept('./views/Root', () => {
const nextRoot = require('./views/Root').default;
render(nextRoot);
});
}
render(Root);
Нормального переключения маршрутов не происходит, вы можете посмотреть приложенное видео ниже
https://share.viewedit.com/XbjKCUjbcvhcL3xRXm8kX7
Из видео видно, что при обычном нажатии на ссылки не происходит повторного рендеринга, но когда я что-то меняю в каком-либо компоненте, во время рендеринга переключаемого пути происходит исправление react-hot-loader.< /сильный>
Мой проект находится на этом пути https://github.com/bboysathish/react-boilerplate/tree/dev
Как я могу решить эту проблему?