【发布时间】:2017-11-15 18:42:20
【问题描述】:
React Router 在我的 Webpack 开发服务器和热重载器的开发过程中一直运行良好,但是在为生产配置时它似乎失败了。它在页面刷新时起作用,但<Link/> 组件和推送到历史 API 不会导致 UI 发生变化。我的设置如下。其中render 是在本地与Webpack 开发服务器一起工作的设置,而renderTest 是不起作用的。
const render = Component => {
ReactDOM.render(
<MuiThemeProvider muiTheme={Theme}>
<Router>
<AppContainer>
<Provider store={store}>
<Component/>
</Provider>
</AppContainer>
</Router>
</MuiThemeProvider>,
document.getElementById('root')
)
};
const renderTest = Component => {
ReactDOM.render(
<MuiThemeProvider muiTheme={Theme}>
<Router>
<Provider store={store}>
<Component/>
</Provider>
</Router>
</MuiThemeProvider>,
document.getElementById('root')
)
};
//render(Root);
renderTest(Root);
// if (module.hot) {
// module.hot.accept('./containers/root-container/root-container', () => { render(Root) });
// }
【问题讨论】:
-
“似乎失败”信息不充分,您能否提供您遇到的确切错误?
-
当然,单击 不会导致 UI 发生变化。但是手动去一个路由(例如htttp://localhost:8080/some/route)是可行的。
-
好的,我想通了。事实证明,react router (v4) 和 redux 存在已知的兼容性问题。 (更多信息在这里:github.com/ReactTraining/react-router/issues/4671)我发现适合我的情况的解决方法是用
withRouter包装我的根组件,这样位置上下文就会传递给每个组件。这不是一个理想的解决方案,但在官方修复之前它可以工作。 -
您可以在下方发布您的解决方案作为答案并将其标记为答案,以便其他人可以更清楚地看到您的解决方案
-
谢谢,我不只是潜伏堆栈溢出。
标签: javascript reactjs webpack react-router react-redux