vue路由传参 router-link和编程式传参方式

 更新时间:2023年05月25日 09:00:05   作者:这个网名好记  
这篇文章主要介绍了vue路由传参 router-link和编程式传参方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue路由传参 router-link和编程式传参

//路由中配置了如下对象:
let options= {
    routes:[
        {
            path:'/insertquery',
            name:'query1',
            component:()=>import('@/pages/insertquery')
        },
        {
            path:'/insertparams1/:id/:name',
            name:'params1',
            component:()=>import('@/pages/insertparams1')
        },
        {
            path:'/',
            component:()=>import('@/pages/home')
        }
    ]
}

vue中query传递参数

query传参更像是原生中的get方式传参,参数会在url中以?id=xxx&name=xxx的形式存在。刷新不丢失。

传递时,分为以下几种形式。我们往 path:'/insertquery’中组件中传参:

<template>
  <div style="display: flex;flex-direction:column">
    <router-link :to=" '/insertquery?id='+dataId+'&name='+dataName">query传参</router-link>
    <router-link :to="`/insertquery?id=${dataId}&name=${dataName}`">query传参</router-link>
    <!--可以使用路由中的name和path中的任意一种-->
    <router-link :to="{path:'/insertquery',query:{id:dataId,name:dataName} }">query传参</router-link>
    <router-link :to="{name:'query1',query:{id:dataId,name:dataName} }">query传参</router-link>
      <button @click="queryBtn1">query传参</button>
      <button @click="queryBtn2">query传参</button>
  </div>
</template>
<script>
export default {
  name: "home",
  data(){
    return {
      dataId:222,
      dataName:'张三'
    }
  },
  methods:{
    queryBtn1(){
      this.$router.push({
        name:'query1',
        query:{id:'22',name:this.dataName}
      })
    },
    queryBtn2(){
      this.$router.push({
        path:'/insertquery',
        query:{id:this.dataId,name:this.dataName}
      })
    }
  }
}
</script>
<style scoped>
</style>

接收参数 :this.$route.query.变量名

再说params传参 (对象写法下只能使用路由中的name)

<template>
  <div style="display: flex;flex-direction:column">
    <router-link :to=" '/insertparams1/'+dataId+'/'+dataName">params传参</router-link>
    <router-link :to="`/insertparams1/${dataId}/${dataName}`">params传参</router-link>
    <router-link :to="{name:'params1',params:{id:dataId,name:dataName} }">params往动态路由中传递,刷新参数不丢失</router-link>
      <button @click="paramsBtn1">params往动态路由中传递,刷新参数不丢失</button>
      <!--注意:对象的形式中只能路由中的name跳转,往普通路由跳转,刷新后参数会丢失(对象形式下,params参数不在url中)-->
      <router-link :to="{name:'query1',params:{id:dataId,name:dataName} }">params往普通路由传递,刷新后会丢失</router-link>
      <button @click="paramsBtn2">params往普通路由传递,刷新后会丢失</button>
  </div>
</template>
<script>
export default {
  name: "home",
  data(){
    return {
      dataId:222,
      dataName:'张三'
    }
  },
  methods:{
    paramsBtn1(){
      //注意:params往动态路由中传递,刷新参数不丢失
      this.$router.push({
        name:'params1',
        params:{id:'22',name:this.dataName}
      })
    },
    paramsBtn2(){
      //注意:这里传递后,刷新后会丢失(对象形式下,params参数不在url中)
      this.$router.push({
        name:'query1',
        params:{id:'22',name:this.dataName}
      })
    }
  }
}
</script>
<style scoped>
</style>

接收参数:this.$route.params

this.$route.query和this.$route.params的正确使用

this.$route.query的使用

(1)、传参数:

this.$router.push({
         path: '/checkout',
         query:{
               productId:id,
          }
})

(2)、获取参数:

this.$route.query.productId

(3)、在url中形式(url中带参数)

http://xxx/#/goodsDetails?productId=150642571432849

(4)、页面之间用路由跳转传参时,刷新跳转后传参的页面,数据还会显示存在(项目中遇到此问题)

this.$route.params的使用

(1)、传参数:

// An highlighted block
this.$router.push({
         name: 'checkout',
         params:{
               productId:id,
          }
});

(2)、获取参数:

// An highlighted block
this.$route.params.productId

(3)、在url中形式(url中不带参数)

// An highlighted block
http://172.19.186.224:8080/#/checkout

(4)、页面之间用路由跳转传参时,刷新跳转后传参的页面,数据不存在((url中没带参数))

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue如何基于es6导入外部js文件

    Vue如何基于es6导入外部js文件

    这篇文章主要介绍了Vue如何基于es6导入外部js文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • VUEX-action可以修改state吗

    VUEX-action可以修改state吗

    这篇文章主要介绍了VUEX-action可以修改state吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • vue后台管理添加多语言功能的实现示例

    vue后台管理添加多语言功能的实现示例

    这篇文章主要介绍了vue后台管理添加多语言功能的实现示例,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-04-04
  • vue 集成 vis-network 实现网络拓扑图的方法

    vue 集成 vis-network 实现网络拓扑图的方法

    这篇文章主要介绍了vue 集成 vis-network 实现网络拓扑图的方法,本文通过实例代码给大家介绍的非常详细 ,需要的朋友可以参考下
    2019-08-08
  • vuex2中使用mapGetters/mapActions报错的解决方法

    vuex2中使用mapGetters/mapActions报错的解决方法

    这篇文章主要介绍了vuex2中使用mapGetters/mapActions报错解决方法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • 基于Vue2实现歌曲播放和歌词滚动效果

    基于Vue2实现歌曲播放和歌词滚动效果

    这篇文章主要介绍了如何基于Vue2实现歌曲播放和歌词滚动效果,文中通过代码示例和图文讲解的非常详细,对大家的学习或工作有一定的帮助,感兴趣的小伙伴可以自己动手试一下
    2024-09-09
  • vue3.x使用swiper实现卡片轮播

    vue3.x使用swiper实现卡片轮播

    这篇文章主要为大家详细介绍了vue3.x使用swiper实现卡片轮播,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Vue组件化编程详解

    Vue组件化编程详解

    文章介绍了Vue中组件的基本使用、定义、注册、书写标签和嵌套等关键步骤和注意事项,详细解释了组件的配置选项、如何通过Vue.extend创建组件以及组件实例对象与Vue实例对象的区别,还提及了单文件组件的结构和编写逻辑,并强调了组件原型链的重要性
    2025-10-10
  • Vue生命周期和钩子函数的详解与经典面试题

    Vue生命周期和钩子函数的详解与经典面试题

    Vue生命周期是指vue实例对象从创建之初到销毁的过程,vue所有功能的实现都是围绕其生命周期进行的,下面这篇文章主要给大家介绍了关于Vue生命周期和钩子函数的相关资料,需要的朋友可以参考下
    2021-10-10
  • 关于Vue 监控数组的问题

    关于Vue 监控数组的问题

    这篇文章主要介绍了Vue 监控数组的示例,主要包括Vue 是如何追踪数据发生变化,Vue 如何更新数组以及为什么有些数组的数据变更不能被 Vue 监测到,对vue监控数组知识是面试比较常见的问题,感兴趣的朋友一起看看吧
    2022-05-05

最新评论