zoukankan      html  css  js  c++  java
  • Vue-router路由传参三种方法及区别

    先有如下场景 点击当前页的某个按钮跳转到另外一个页面去,并将某个值带过去

    <el-button type="primary" @click="handleClick(2)">查看详情</el-button>

    1、第一种方法:拼接方式

    methods:{
      handleClick(id) {
           //直接调用$router.push 实现携带参数的跳转
            this.$router.push({
              path: `/detail/${id}`,
         })
    }

    对应路由配置:

    {
       path: '/detail/:id',
       name: 'detail',
       component: detail
    }

    获取参数方式:

    this.$route.params.id

     这种方式传参,页面刷新数据不会丢失。

    2、第二种方法:params传参

    通过路由属性中的name来确定匹配的路由,通过params来传递参数。

    methods:{
      handleClick(id) {
        this.$router.push({
          name: 'detail',  // 根据name确定匹配路由
          params: {
            id: id
         }
      })
    }
    //或者采用router-link
    <router-link :to="{name: 'detail', params: { id: 1 }}">前往Detail页面</router-link>

    对应路由配置:

    {
       path: '/detail/:id',
       name: 'detail', 
       component: detail
    }

    获取参数方式:

    this.$route.params.id

    需要注意的是,params动态路由传参,一定要在路由中定义参数,然后在路由跳转的时候必须要加上参数,否则就是空白页面。例如,

    // 定义的路由中,只定义一个id参数
    {
        path: 'detail/:id',
        name: 'detail',
        components: detail
    }
    
    // template中的路由传参,
    // 传了一个id参数和一个token参数
    // id是在路由中已经定义的参数,而token没有定义
    <router-link :to="{name: 'Detail', params: { id: 1, token: '123456' }}">前往Detail页面</router-link>
    
    // 在详情页接收
    created () {
        // 以下都可以正常获取到
        // 但是页面刷新后,id依然可以获取,而token此时就不存在了
        const id = this.$route.params.id;
        const token = this.$route.params.token;
    }

    三、第三种方法:query传参

    使用path来匹配路由,然后通过query来传递参数,这种情况下 query传递的参数会显示在url后面?id=?

    methods:{
      handleClick(id) {
            this.$router.push({
              path: '/detail',
              query: {
                id: id
              }
         })
     }

    对应路由配置:

    {
         path: '/detail',
         name: 'detail',
         component: detail
    }

    获取参数:

    this.$route.query.id

    四、总结:params和query中的区别

    1、接收方式

    query传参:this.$route.query.id

    params传参:this.$route.params.id

    2、路由展现方式

    query传参:/detail?id=1&user=123&identity=1&更多参数

    params传参:/detail/123

  • 相关阅读:
    Ubuntu 16.04 安装 Apache, MySQL, PHP7
    Ubuntu下apache2启动、停止、重启、配置
    织梦-数据库-表和字段说明手册
    DEDECMS去除后门隐患和漏洞以及冗余代码的方法
    Express使用html模板
    windows系统 安装MongoDB
    linux搭建node.js环境
    配置vuejs加载模拟数据
    安卓高级5 zXing
    安卓高级5 传感器和震动 模仿微信摇一摇Ui效果
  • 原文地址:https://www.cnblogs.com/lcxcsy/p/13810920.html
Copyright © 2011-2022 走看看