react-router4.0 link组件只有路由变化页面不能跳转

发布于 2022-09-05 05:19:53 字数 1312 浏览 19 评论 0

为了实现路由为

<App>
    <LFMusic/>
    /*<LFCollections/>*/
</App>

的效果,我遇见了下面的问题:

当Route组件父元素为div等元素时link可以正常跳转,而为自定义组件时只有路由变化,页面不跳转刷新。这是route父元素为自定义组件的情况

    <Router history={history}>
        <App>
            <Route path="/" component={LFMusic} exact/>
            <Route path="/mycollections" component={LFCollections}/>
        </App>
    </Router>

clipboard.png
而需要手动刷新浏览器才可以正常显示

clipboard.png
但是当route父元素为div时,点击link可以直接跳转并刷新。对了link组件在App子组件LFMusic中下面是route父元素为div的情况

    <Router history={history}>
        <div>
            <Route path="/" component={LFMusic} exact/>
            <Route path="/mycollections" component={LFCollections}/>
        </div>
    </Router>
    

clipboard.png

求助,萌新已经懵逼了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

同样踩了这个坑.
原因是 <Route> 和 <Link> 没有在同一个 <Router> 下.
解决方案: 将 <Route> 和 <Link> 放在同一个 <Router> 标签内.
如下:

<Router history={history}>
    <div>
        <Route path="/" component={LFMusic} exact/>
        <Route path="/mycollections" component={LFCollections}/>
    </div>
    <div>
        <Link to="/"></Link>
        <Link to="/mycollections"></Link>
    </div>
</Router>
空宴 2022-09-12 05:19:53

这个原因应该是 App.js 中使用了 redux 的缘故。

解决方案:给 App 包上 withRouter 即可

import {withRouter} from 'react-router-dom' ;

...

export default withRouter(connect(mapStateToProps, mapDispatchToProps)(App));

当然,这里解决方案不止一种,如果我说的不能解决你的问题,或者你想探究更多,可以参考:
https://stackoverflow.com/que...

情栀口红 2022-09-12 05:19:53

好吧已经解决。是我逗了,没有exact全部匹配根路径了也就是‘/’

你是暖光i 2022-09-12 05:19:53

我好像跟你遇到一样的问题了,我把App改成div也是好了,但是我要用上App,exact我也写了,貌似还是不行哇~~图片描述

情徒 2022-09-12 05:19:53

你这个问题怎么解决的啊

自我难过 2022-09-12 05:19:53

我解决了, App组件在export的时候加上withRouter

知足的幸福 2022-09-12 05:19:53

你好,我也遇到了这个问题,请问你是怎么解决的呀???

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文