乐趣区

vuerouter-前端路由之路由传值

路由传值

在前端的路由里面,我们在切换路由的时候,也相当于切换了页面,页面与页面之前有时候需要做到传值,这个时候就需要进行路由传值,在 VueRouter 里面,两个路由之间做跳转的时候,如何进行传值呢?

普通跨页面传值:

  1. 通过 localStorage

    setItem()
    getItem()
  2. 通过 search(地址栏? 后面的参数)

VueRouter 的路由传值

VueRouter 的路由传值有两种方式

  1. query 传值。类似 get 传值

    传值的路由

    this.$router.push({path: "/login?uname=" + this.userName});

    传值路由第二种写法

    this.$router.push({
        path: "/login",
        query: {uname: this.userName}
    });

接收值的路由

console.log("接收过来的值为:" + this.$route.query.uname);        // 这里是 $route 没有 r 
----
  1. params 传值。路径变量传值

    params 路由传值可以把它理解成 express 路径变量传值,它也可以放在地址栏里面进行传递

    传值路由第一种写法(还是会将参数显示在地址栏中)

    this.$router.push({path: "/login/" + this.userName});

    传值路由的第二种写法(不会将参数显示在地址栏中)

    this.$router.push({
        name: "login",
        params: {uname: this.userName}
    });

接收值的路由

console.log("接收过来的值为:" + this.$route.params.uname);

注意:在使用 params 传递参数的时候,我们需要在 router 的对象里面,找到当前的这个路由,然后去更改它的path

 {
     path: "/login/:uname", // 代表当前 url 跳转的路径
     component: login, // 代表在当前这个路径下面,我们如何显示组件(显示那一个组件)name: "login" // 给当前路由取一个别名
 }

上面的 path 后面是 /login/:uname, 这一个是我们的一个路径变量,前面的 login 代表路由,而后面:uname 代表的是变量

---
  1. 通过第二种方式的 params 传值,引伸出 post 原理传值

    params 本身确实是会把参数添加到 url 地址栏,但是,我们可以让它不显示出来,使用下面的方法,我们就可以把它去掉,不显示,从而内容不经过浏览器地址栏处理,直接做到传值。

    它只是把路由对象里面的路径变量给去掉了,直接使用的 params 传值

    注意事项:因为它把 path 里面的路径变量去掉了,所以不能使用 path 去传递值了

    this.$router.push({path: "/login/" + this.userName});
    // 现在上面的方法就不可用了,而必须使用下面的方法 
    this.$router.push({
        name: "login",
        params: {uname: this.userName}
    });

    下面的这种写法,变量没有显示在路径里面,只是通过 params 存储,params 传递,不再经过 url 了,这个时候,我们就可以传递大家数据,同时,也可以保证数据安全

    这一个就是 vue 当中变相去处理 post 传值

退出移动版