vue路由传参(比较完整的方法记录)

一、背景

在进行vue开发的时候会涉及到一个问题,就是我们需要对路由进行静态处理,如下面两种情况,可以跳到目标页面:

1. url中直接带上url类型(path/param)
http://localhost:8080/#/movieDetail/123

2. 请求参数类型(path/?query)
http://localhost:8080/#/movieDetail?movieId=123

二、方法

使用下面的方法对跳转路由传参

2.1 路由配置

在index.js路由的的配置参数,按照下面的方法配置路由,包括上述提到的两种方式。

2.1.1 path/param

对于path/param这样的路由,使用下面的方法进行配置,在path之后带上:param就可以获取到参数并转化成对应的参数。

{
  path: '/movieDetail/:movieId',
  name: "movieDetail",
  component: movieDetail,
},

截图:

2.1.2 path/?query

对于path?query这样的路由,使用下面的方法来获取参数,由于是query请求,因此不需要将参数构建在路由上。

{
  path: '/movieDetail',
  name: "movieDetail",
  component: movieDetail,
},

截图:

2.2  路由使用

在需要的地方使用router-link

2.2.1 path/param

在需要跳转的地方使用router-link进行界面的跳转

1. 使用to直接构建跳转路由
<router-link :to="'/movieDetail/'+132"></router-link>
2.使用path的参数跳转路由
<router-link :to="{path:'/movieDetail/'+123}"></router-link>
3.使用name和params实现路由跳转
<router-link :to="{name:'movieDetail', params:{movieId:123}}"></router-link>
(注意movieId必须和路由中的参数保持一致,才可以展示出来)

2.2.2 path/?query

使用以下的方法完成路由的跳转传参

1. 使用to直接构建跳转路由
<router-link :to="'/movieDetail'+'?movieId=123'"></router-link>
2.使用path的参数跳转路由
<router-link :to="{path:'/movieDetail'+'?movieId=123'}"></router-link>
3.使用name和query实现路由跳转
<router-link :to="{name:'movieDetail', query:{movieId:123}}"></router-link>
4.使用path和query实现路由跳转
<router-link :to="{path:'/movieDetail', query:{movieId:123}}"></router-link>

2.3 路由解析

跳转到目的路由之后将进行路由的解析。路有对象有以下的两种:

this.$route //只读、具备信息的对象
this.$router //具备功能的函数

// 因此使用this.$route进行路由解析
// 解析path/params的路由参数
console.log(this.$route.params);
//  解析path?query的路由参数
console.log(this.$route.query);

三、总结

3.1 构建需要

根据使用的方法,如果是是下面例子中(1)的配置就无法使用path/param,如果按照(2)的配置就可以

(1)这种请求方式无法构造出path/params的路由方式
{
    path: '/movieDetail',
    name: "movieDetail",
    component: movieDetail,
},

(2)这种请求方式,可以构造path/params也可以使用到
{
    path: '/movieDetail/:movieId',
    name: "movieDetail",
    component: movieDetail,
},

3.2 name和path的区别

1.相同
都可以用于构建路由,实现路由跳转
2.不同
(1)path实现path/params的方式只有to或者path+params的方式,不能够使用params参数,而name可以使用params。
(2)path会忽略params,name不会,可以使用query和params;构造更灵活。

3.3 路由构建的方式

1. 字符串
直接构建简单路由,但是构建复杂的路由不够灵活,如query的请求

2. name+query/params
可以使用params和query两种数据传参的方式。
params在path/params时会将传过来的值解析到路由中。构建params的方法。
query会存在router的对象中,会将结果以get的方式作为路由。构建query的方法。
构造方式灵活,对于路由的配置要求也不限制,在有无参数的情况下都可以构造出需要的路由。

3. path
直接构建跳转的路由,能构建path?query的动态请求,也能够构建path/params的动态请求。
但是对于路由的设置要求严格,如果没有设置path/params的情况就不会出现结果跳转。name不会影响。

3.4 路由构建推荐

对于path/param的路由直接使用str+param的方式

对于path?query的路由使用path+query的参数构建

四、参考

关于路由传参的内容较多,这篇做了一个总结。

详细介绍:https://blog.csdn.net/qq_35393869/article/details/80251099

简单使用:https://www.jianshu.com/p/537fa412cf01

原文地址:https://www.cnblogs.com/future-dream/p/14619248.html