Eri*_*kWi 2 javascript reactjs react-router-v4
我正在编写一个带导航栏和5条路线的小应用程序react-router-dom 4.1.1.当我单击导航栏中的链接时,Firefox地址栏中的URL会更新,但显示的页面不会更改.但是,如果我在地址栏中输入子页面的地址,则会显示正确的页面.
app.js:
render(
<Provider store={store}>
<HashRouter>
<MainContainer />
</HashRouter>
</Provider>,
document.querySelector('.app')
);
Run Code Online (Sandbox Code Playgroud)
Main.js:
render() {
return (
<div className="main">
<Message message= {this.props.message} />
<NavigationBar />
<Switch>
<Route exact path="/" component={HomePage}></Route>
<Route path="/classify" component={ClassifyPage}></Route>
<Route path="/admin" component={AdminPage}></Route>
<Route path="/users" component={UsersPage}></Route>
<Route path="/help" component={HelpPage}></Route>
</Switch>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
看起来有些组件,比如使用connect()的react-redux容器阻塞更新.使用withRouter()解决了这个问题:
const MainContainer = withRouter(connect(
mapStateToProps,
mapDispatchToProps
)(Main));
Run Code Online (Sandbox Code Playgroud)
文档:https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/withRouter.md
我有同样的错误,但是当我使用 withRouter 时,没有任何变化。就我而言,错误的原因是将<Link>元素放入<Router>标签中。
<Router>
<Link to="something"></Link>
</Router>
Run Code Online (Sandbox Code Playgroud)
当心那个错误,很难诊断!要解决此问题,只需删除不必要的<Router>包装器