Javascript 反应路由器4不';单击时不更新UI<;链接>;

Javascript 反应路由器4不';单击时不更新UI<;链接>;,javascript,reactjs,react-router-v4,Javascript,Reactjs,React Router V4,我正在使用react router dom 4.1.1编写一个带有导航栏和5条路由的小应用程序。当我点击导航栏中的链接时,Firefox地址栏中的URL会更新,但显示的页面不会改变。但是,如果在地址栏中输入子页面的地址,则会显示正确的页面 app.js: render( <Provider store={store}> <HashRouter> <MainContainer /> </Has

我正在使用
react router dom 4.1.1
编写一个带有导航栏和5条路由的小应用程序。当我点击导航栏中的链接时,Firefox地址栏中的URL会更新,但显示的页面不会改变。但是,如果在地址栏中输入子页面的地址,则会显示正确的页面

app.js:

render(
    <Provider store={store}>
        <HashRouter>
            <MainContainer />
        </HashRouter>
    </Provider>,
    document.querySelector('.app')
);
渲染(
,
document.querySelector(“.app”)
);
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>
    );
}
render(){
返回(
);
}

似乎有些组件(如使用connect()的react-redux容器)会阻止更新。使用withRouter()解决了该问题:


文档:

埃里克·温格几乎在右边。 据我所知,您输入的组件需要使用withRouter包装您的组件

因此,要解决此问题,您需要添加:

...
Main = withRouter(Main);
...
export default Main;
...

我也有同样的错误,但当我使用路由器时,没有任何变化。在我的例子中,错误的原因是将
元素放入
标记中

<Router>
<Link to="something"></Link>
</Router>


小心那个错误,很难诊断!若要解决此问题,只需删除不必要的
包装

您可以共享您的导航栏吗?这是否解决了您的问题,因为我像您在这里一样使用带路由器的
包装,但我仍然遇到相同的问题?是的,这解决了我的问题。无论何时使用
connect
,您都会使用路由器
吗?是的,我甚至尝试过删除connect,但它仍在正常工作。也许您使用了其他组件打破了更新链?@DanielBarde您是否设法解决了您的问题?我也有同样的问题。谢谢谢谢你的提示。我有与上面解释的相同的错误,但是在我的代码中没有不必要的
。-(你是最好的!!
<Router>
<Link to="something"></Link>
</Router>