zoukankan      html  css  js  c++  java
  • vue路由传参的三种方式区别(params,query)

    最近在做一个项目涉及到列表到详情页的参数的传递,网上搜索一下路由传参,结合自己的写法找到一种适合自己的,不过也对三种写法都有了了解,在此记录一下 

    1  <ul class="table_info" v-for="item in customeLsit">
    2        <li>{{item.name}}</li>
    3        <li>{{item.phone}}</li>
    4        <li>{{item.date}}</li>
    5        <li class="detail" @click="customeDetail(item.id)">详情</li>

    这是列表页面,需要传递参数到详情页,下面给出三种方法

    方法一:直接在路由路径后面加参数

    customeDetail(id){
          console.log('id',id);
           this.$router.push({
            path:'/custome/customeDetailPage/${id}',
           })
        },
    需要对应路由配置如下:
     {
          path:'/custome/customeDetailPage/:id',
          component:CDetailPage
        },
    //需要在path中添加/:id来对应参数
    
    //详情页获取传递的参数
     methods:{
        getParams(){
          let routerParams = this.$route.params.id;
           this.customId = routerParams;
           console.log('id',routerParams);
        },
    
      },
      created(){
        this.getParams()
      }

    方法二:利用name属性来匹配路由,然后通过params传递参数

     1 //列表页面传参数
     2 customeDetail(id){
     3       console.log('id',id);
     4        this.$router.push({
     5         name:'CDetailPage', //注意一定要用name属性匹配路由
     6         params:{
     7           dataObj:id
     8         }
     9        })
    10     },
    11 //对应路由配置
    12 {
    13       path:'/custome/customeDetailPage',
    14       name:'CDetailPage',
    15       component:CDetailPage
    16     },
    17 //详情页面接收参数
    18  methods:{
    19     getParams(){
    20       let routerParams = this.$route.params.dataObj;
    21        this.customId = routerParams;
    22        console.log('id',routerParams);
    23     },
    24 
    25   },
    26   created(){
    27     this.getParams()
    28   }

    第三种方法:通过path匹配路由,然后通过query传递参数

    //列表页面传参
    customeDetail(id){
          console.log('id',id);
           this.$router.push({
            path:'/custome/customeDetailPage',
            query:{
              name:'id',
              dataObj:id
            }
           })
        },
    //路由配置,name属性可有可无
    {
          path:'/custome/customeDetailPage',
          component:CDetailPage
        },  //我写的时候是没有用name属性
    //详情页获取属性
     methods:{
        getParams(){
          let routerParams = this.$route.query.dataObj;
           this.customId = routerParams;
           console.log('id',routerParams);
        },
    
      },
      created(){
        this.getParams()
      }

    这是query传参是路由显示的参数

  • 相关阅读:
    一个例子帮助理解正则表达式
    requestAnimationFrame兼容性扩展
    检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
    手把手教你如何安装和使用Karma-Jasmine
    cesium随笔 — 隐藏三维场景下方版权信息
    cesium随笔 — 获取当前鼠标的经度、纬度、高度
    Cesium Language (CZML) 入门2 — CZML Content(CZML的内容)
    html初识
    MySQL终章
    MySQL表与表之间的关系详解
  • 原文地址:https://www.cnblogs.com/kingsnowcan/p/vue-router_params.html
Copyright © 2011-2022 走看看