首先,我正在使用:
- “反应路由器”:“3.0.2”,
- 浏览器同步": "2.18.8",
- "url-loader": "0.5.7",
- "webpack": "1.13.1",
- "webpack-dev-middleware": "1.6.1",
- "webpack-hot-middleware": "2.12.2",
- “材料-ui”:“0.17.0”,
好的,现在 Webpack HMR 仅在我编辑作为主路由一部分的 reactjs 组件时才起作用,我的意思是:myurlapp.com/
但是如果一个组件是另一个路由的一部分,例如:myurlapp.com/form
然后整个应用程序被重新加载。这是为什么?
我的根 js 是这样的:
import React from 'react';
import { render } from 'react-dom';
import { Router, browserHistory } from 'react-router';
import routes from './routes';
import injectTapEventPlugin from 'react-tap-event-plugin';
require('./favicon.ico');
import './styles.scss';
import 'font-awesome/css/font-awesome.css';
import 'flexboxgrid/css/flexboxgrid.css';
injectTapEventPlugin();
render(
<Router routes={routes} history={browserHistory} />, document.getElementById('app')
);
routes.js 是这样的:
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import App from './containers/App';
import NotFoundPage from './containers/NotFoundPage.js';
import LoginPage from './containers/LoginPage';
import FormPage from './containers/FormPage';
import TablePage from './containers/TablePage';
import Dashboard from './containers/DashboardPage';
export default (
<Route>
<Route path="login" component={LoginPage}/>
<Route path="/" component={App}>
<IndexRoute component={Dashboard}/>
<Route path="dashboard" component={Dashboard}/>
<Route path="form" component={FormPage}/>
<Route path="table" component={TablePage}/>
<Route path="*" component={NotFoundPage}/>
</Route>
</Route>
);
顺便说一下,这是 webpack 的条目:
entry: [
'./src/webpack-public-path',
'webpack-hot-middleware/client?reload=true',
'./src/index'
],
我应该显示什么其他代码?这就是我在 Chrome 开发工具控制台中看到的内容: 如您所见,我编辑了 Header.js 的代码,并且更新正常(无需重新加载整个应用程序),但如果我编辑另一个组件,则为独占对于不同于主路由器的路由器/然后重新加载整个应用程序。