首先,我正在使用:
-
"react-router":"3.0.2",
-
browser-sync ": " 2.18.8“,
-
"url-loader":"0.5.7",
-
"webpack":"1.13.1",
-
"webpack-dev-middleware":"1.6.1",
-
"webpack-hot-middleware":"2.12.2",
-
"material-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的代码并且更新已经完成(没有重新加载整个应用程序)但是如果我编辑另一个组件,那么是专用于不同于主的路由器/然后整个应用程序是真实的 .