← 返回首页
Vue-cli3基础教程(五)
发表时间:2020-11-25 12:29:37
路由传参

路由传参分为两种类型。 1.在router.js的 path中无需配置参数。 2.在router.js的 path中配置有参数。

我们先看第一种,在router.js的 path中无需配置参数 这种传参方式对应了传统方式,例如:url?a=xxx&b=xxx 对应的admin路由配置,如下:

{
        path: '/admin',  //这里admin后没有配置任何参数
        name: 'admin',
        component: resolve => require.ensure([], () => resolve(require('@/views/admin/admin')), 'admin')
}

那么,对应这种路由配置,其路由跳转并传参,有以下三种方式实现。

1.使用传统标签方式 语法:

<li><a href="/admin?uid=1">张三</a></li>

2.使用传统window.location.href方式 语法:

goToUrl(uid){
   window.location.href="/admin?uid="+uid;
}

3.使用this.$router.push方式 语法:

goToUrl(){
   this.$router.push({
        path:'admin',
        query:{
            uid: 100
        }
   })
}

4.使用this.$router.replace方式 语法:

goToUrl(){
   this.$router.replace({
        path:'admin',
        query:{
            uid: 100
        }
   })
}

this.$router.replace与this.$router.push 的区别,见下表: |方式|说明| |-|-| |this.$router.push|实现指定url跳转,这个方法会向history栈添加一个记录,使用后退this.$router.back();会返回到上一个页面。| |this.$router.replace|实现指定url跳转,这个方法不会向history栈添加记录,使用后退this.$router.back();会返回到上上一个页面。因为它的上个页面是不存在的。history栈没有记录。|

下来我们看第二种,在router.js的 path中配置有参数。 这种方式对应了RESTFul风格,例如:api/arg1/arg2 对应的users路由配置,如下:

{
      path: '/users/:uid', //注意:/users 后面带参数uid
      name: 'users',
      component: resolve => require.ensure([], () => resolve(require('@/views/users/users')), 'users')
}

1.使用传统标签方式

语法:

<li><a href="/users/20">李思思</a></li>
<!--通过属性动态传参-->
<li><a :href="'/users/'+uid">李思思</a></li>

2.使用router-link方式 语法:

<li><router-link to="/users/2">李四</router-link></li>
<li><router-link :to="{name:'users',params:{uid:3}}">王五</router-link></li>

3.使用传统的window.location.href方式 语法:

goToUrl(uid){
   window.location.href="/users/"+uid;
}

4.使用this.$router.push方式 语法:

goToUrl(){
   this.$router.push({
        name:'users',
        params:{
            uid: 100
        }
   })
}

5.使用this.$router.replace方式 语法:

goToUrl(){
   this.$router.replace({
        name:'users',
        params:{
            uid: 100
        }
   })
}

在vue组件中如何获取参数呢?

如果参数是传统传参方式,url?uid=100。采用以下方式接受参数。

this.$route.query.uid

如果参数是使用RESTFul 风格方式,api/100 ,采用以下方式接受参数。

this.$route.params.uid