Vue Router传参

1,304 阅读1分钟

参考自:blog.csdn.net/mf_717714/a…

$router$route的区别
//$router:是路由操作对象,只写对象
//$route:是路由信息对象,只读对象

//操作路由跳转
this.$router.push({
    name: 'hello',
    params: {
        name: 'word',
        age: '11'
    }
})

//读取路由参数接收
this.name = this.$route.params.name;
this.age = this.$route.params.age;

Vue Router传参分为params和query两种方法

用params传参,F5刷新会清空参数,而用query传参,由于参数是用路径传参的,所以F5刷新也不会清空参数。

params

  • params的类型

    • 配置路由格式:/router/:id

    • 传递的方式:在path后面跟上对应的值

    • 传递后形成的路径:/router/123,router/abc

使用params传参只能使用name传入

// params传参,使用name
this.$router.push({
    name: 'first',
    params: {
        id: '1',
        name: 'params'
    }
})

// params接收参数
this.id = this.$route.params.id;
this.name = this.$route.params.name;

// 路由
{
    path: '/first/:id/:name',
    name: 'first',
    component: () => import('@/view/second')
}

(1)params是路由的一部分,必须要在路由后面添加参数。 (2)params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但在跳转的时候没传这个参数,就会导致跳转失败或页面没有内容。

query

  • query的类型

    • 配置路由格式:/router,也就是普通配置

    • 传递的方式:在对象中使用query的key作为传递方式

    • 传递后形成的路径:/router?id=123,/router?id=abc

query可以通过name传参也可以通过path传参,效果相同。

path优先级高于name。

// query传参,使用name跳转
this.$router.push({
    name: 'second',
    query: {
        queryId: '2',
        queryName: 'query'
    }
})

// query传参,使用path跳转
this.$router.push({
    path: 'second',
    query: {
        queryId: '2',
        queryName: 'query'
    }
})

// query传参接收
this.queryId = this.$route.query.queryId;
this.queryName = this.$route.query.queryName;

总结

(1)传参可以使用paramsquery两种方式。 (2)params只可以使用name来引入路由,query可以使用namepath来引入路由。 (3)params是路由的一部分,必须要在路由后面添加参数名。query是拼接在url后面的参数,没有也可以。 (4)query相当于get请求,页面跳转时,可以在地址栏看到请求参数,params相当于post请求,参数不会在地址栏中显示。