xiaotuni / react-webpack-demo

react15, react-route-dom4 、redux 、es6 、webpack 、redux 、superagent、react-hot-loader、postcss-loader
28 stars 14 forks source link

初始化渲染的时候 如何根据生产环境和开发环境 渲染不同的render #1

Open aKaigege opened 6 years ago

aKaigege commented 6 years ago

我现在遇到的问题就是

const Oathkeeper = process.env.NODE_ENV === 'development' ? () => (

**<AppContainer>
    <Provider store={store}>
        <RouterMap />
    </Provider>
</AppContainer>**

) : (

    **<Provider store={store}>
        <RouterMap />
    </Provider>**

)

export default Oathkeeper

render(

 < Oathkeeper />
,document.getElementById('app')

)

if (process.env.NODE_ENV === 'development' && module.hot) {

module.hot.accept('./config/router', () => { require('./config/router'); render(

  <AppContainer>
    <Provider store={store}>
      <RouterMap />
    </Provider>
  </AppContainer>
  , document.getElementById('app')

)

} ) } hot这部分不会局部刷新,可能是我写的方法不对 请问我要怎么写呢?

xiaotuni commented 6 years ago
/**
 * 初始化
 */
renderWithHotReload(getRouter());

/**
 * 热更新,
如果是生产环境的话,这部分代码是不会运行的。直接运行的是renderWithHotReload就可以了。
 */
if (module.hot) {  
  module.hot.accept('./router/router', () => {
    const getRouter1 = require('./router/router').default;
    renderWithHotReload(getRouter1());
  });
}

在开发的,由于webpack里用到热加载,所以会用到 module.hot.accept 来进行更热新。