路由传参

组件之间的切换通常都会携带参数,本节讲解路由传参,路由传参分为两种形式。

传参方式一

路由传参的第一种形式是在 router-link 超链接标签中传递参数,代码如下。

<div id="app" v-cloak>
  <router-link to="/login?id=1">登录</router-link>
  <router-view></router-view>
</div>

这种形式的路径后面使用问号拼接,单击进入登录组件并携带参数,使用这种形式不需要修改路由的匹配规则。

然后介绍在登录组件中如何获取参数,组件代码如下。

<script>
  var login = {
    template: '<div><h1>登录--{{id}}</h1></div>',
    data() {
      return {
        id: null
      }
    },
    created() {
      console.log(this.$route)
      console.log(this.$route.query.id)
      this.id = this.$route.query.id
    }
  }
</script>

代码解析如下。

使用问号传参,最终的参数在 this.$route.query 中。

传参方式二

路由传参的第二种形式是修改匹配规则,代码如下。

<div id="app" v-cloak>
  //2.直接传递参数,不需要问号
  <router-link to="/login/1">登录</router-link>
  <router-view></router-view>
</div>

<script>
  var login = {
    template: '<div><h1>登录--{{id}}</h1></div>',
    data() {
      return {
        id: null
      }
    },
    created() {
      //3.使用this.$route.params.id获取数据
      console.log(this.$route)
      console.log(this.$route.params.id)
      this.id = this.$route.params.id
    }
  }

  var router = new VueRouter({
    routes: [{
    //1.修改匹配规则,使用占位置传参
      path: '/login/:id',
      component: login
    }]
  })
</script>

代码解析如下。

使用修改路由匹配规则这种传参方式需要注意参数的获取,参数同样是在 this.$route 中,下一层是 this.$route.params,与方式一是有区别的。以上就是对路由传参的两种方式的介绍。