首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法热更新hot模块

无法热更新hot模块
EN

Stack Overflow用户
提问于 2016-10-24 17:58:48
回答 1查看 464关注 0票数 2

我正在构建一个web应用程序使用的反应-路由器和材料-ui。最近我注意到,react热加载器已经更新,并且在使用ho加载器时出现了一些问题。当我将它与react路由器一起使用时,热加载程序将不能用于子组件。这是我的index.js代码

代码语言:javascript
复制
import React from 'react';
import {render} from 'react-dom';
import { AppContainer } from 'react-hot-loader'
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import { Router, Route, Link, browserHistory,IndexRoute } from 'react-router'
import injectTapEventPlugin from 'react-tap-event-plugin';
import routes from './routes';

injectTapEventPlugin();

const App = () => (
  <MuiThemeProvider>
    <Router history={browserHistory} routes={routes} />
  </MuiThemeProvider>
);

render(<App/>,document.getElementById('app'));

if (module.hot) {
  module.hot.accept('./components/App', () => {
    const NextApp = require('./components/App').default;
    render(
      <AppContainer>
      <MuiThemeProvider>
        <NextApp/>
      </MuiThemeProvider>
      </AppContainer>
      ,
      document.getElementById('app')
    );
  });
}

这里是我的应用程序组件

代码语言:javascript
复制
import React from 'react';
import Home from './Home';
import About from './About/AboutPage.react';
import NavigationBar from './navigation/navigationBar.react';



class App extends React.Component{
   render(){
     return(
       <div>
        <NavigationBar/>
        {this.props.children}
       </div>
     );
   }
}

export default App;

路由文件

代码语言:javascript
复制
import React from 'react';
import {render} from 'react-dom';
import { Router, Route, Link, browserHistory,IndexRoute } from 'react-router'
import App1 from './components/App';
import NavigationBar from './components/navigation/navigationBar.react';
import greetings from './components/Login/greetings';


export default (
     <Route path="/" component={App1}>
       <IndexRoute component={greetings}/>
     </Route>
);

当我对子组件做任何更改时,浏览器控制台会发出警告:

以下模块无法热更新:(完全重新加载所需)这通常是因为模块已经更改(以及它们的父模块)不知道如何热重新加载自己。有关更多细节,请参见 http://webpack.github.io/docs/hot-module-replacement-with-webpack.html http://webpack.github.io/docs/hot-module-replacement-with-webpack.html有什么特别的原因,为什么我会得到这个信息,以及如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-24 19:15:33

请确保您还在使用react热加载程序的AppContainer组件包装初始呈现。如下所示:

代码语言:javascript
复制
const App = () => (
  <AppContainer>
    <MuiThemeProvider>
      <Router history={browserHistory} routes={routes} />
    </MuiThemeProvider>
  </AppContainer>
);

另外,我没有看到您的webpack配置,所以请确保您在第一个条目中也包含了react-hot-loader/patch,例如:

代码语言:javascript
复制
entry: [
  'react-hot-loader/patch',
  `webpack-dev-server/client?http://localhost:${config.port}`,
  'webpack/hot/only-dev-server',
  './src/index.jsx'
],

如果您也有一个.babelrc文件,请确保将它作为您的插件之一,如下所示:

代码语言:javascript
复制
{
  "presets": [
    "react",
    "es2015",
    "stage-0"
  ],
  "plugins": [
    "react-hot-loader/babel",
    "transform-decorators-legacy"
  ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40224611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档