javascript - react-router 不用 Link 怎么跳转路由?

查看:161
本文介绍了javascript - react-router 不用 Link 怎么跳转路由?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

一般用链接

<Link to="/home ">home</Link>

然后

<Route path="/home" component={Home}/>

点击来跳转。

但我用 <Link/> 包着 UI 组件的话显示会有问题,然后我在我的 UI 组件上的 onChange 方法中用 history.pushState() 发现只是改变了地址栏,但 react-router 的

<Route path="/home" component={Home}/>

并不会起作用,想问下大家,怎么才能不用 <Link/> 让上面的代码起作用?只能模拟点击吗?

谢谢

解决方案

history.pushState的话确实如楼上所说只是在history里面添加一条路由记录,并且改变url,不会刷新页面,所以内容不会变,解决的办法可以用如下代码试试:

    class Test {
        constructor(props, context){
            super(props, context);
            this.router = context.router;
        }
    }
    Test.contextTypes = {
      router: PropTypes.object.isRequired
    };
    
    

在你ui组件的onChange事件里面写如下代码:

     this.router.push(...)

push方法的参数就是你要跳转的路由,为什么上面代码可以办到呢,可以看以https://facebook.github.io/re...这里context的使用,再结合react-router源码中的RouteContext.js文件里getChildContext理解,还有一个重要点是你的组件都被router也就是路由组件包着,所以你任何子组件用contextChild,就可以用context处理路由啦,不知道我解释清楚没

这篇关于javascript - react-router 不用 Link 怎么跳转路由?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆