vue-router 路由动态传参 query和params的区别

简介: vue-router 路由动态传参 query和params的区别

最近空闲一段时间,就没事看了看vue-router的一些知识,想起了之前做项目遇到的一些不解,也就是当初刚入门,文档看的不详细,理解的不全面导致的。现在虽然不怎么会犯这样的错误了,但是还是写下来,记录一下,也方便有需要的朋友查阅,共勉吧。如果能帮到你,那就更好了...

/data/:id这个路由匹配/data/1,/data/2这里的 id 叫 params

/data?id=1 /data?id=2 这里的 id 叫 query

当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。

这句话怎么理解呢?看下边:

如果你要使用params传参,那么你的路由页面index.js必须带上参数,如下

{
   path: '/detail/:id/',
   name: "detail",
   component: detail//这个details是传进来的组件名称
 }
使用: 
方法1:<router-link :to="{ name: 'details', params: { id: 123 }}">点击按钮</router-link>
方法2:this.$router.push({name:'details',params:{id:123}})
页面url显示结果是:http://localhost:8081/#/details/123

如果你要使用query传参,那么你的路由页面index.js必须带上参数,如下

{
   path: '/detail',//这里不需要参入参数,参见上面的params写法
   name: "detail",
   component: detail//这个details是传进来的组件名称
 }
使用: 
方法1:<router-link :to="{ name: 'details', query: { id: 123 }}">点击按钮</router-link>
方法2:this.$router.push({name:'details',query:{id:123}})
方法3:<router-link :to="{ path: 'details', query: { id: 123 }}">点击按钮</router-link>
方法4:this.$router.push({path:'details',query:{id:123}})
页面url显示结果是:http://localhost:8081/#/details?id=123

这里看方法3,4,其实是对应方法1,2的,也就是说使用query方法,可以与path和name共用,2个都可以,但是params只能对应name。

要是想获取参数值:各自的获取方法是:

query和params分别是:this.$route.query.id,this.$route.params.id

顺便说一些参数是多个的情况

params传参,如果路由index.js如下:

{
   path: '/detail/:id/:name',
   name: "detail",
   component: detail//这个details是传进来的组件名称
 }

那么跳转写法:this.$router.push({name:'detail',params:{id:123,name:'lisi'}})

效果:http://localhost:8081/#/details/123/lisi

query的写法参考上面。

query跟params,前者在浏览器地址栏中显示参数,后者则不显示。


相关文章
|
14天前
|
JavaScript 前端开发 API
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
|
2月前
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
41 3
|
2月前
|
JavaScript 前端开发 开发者
Vue v-for 进阶指南:in 与 of 的区别及应用场景 | 笔记
Vue.js 中的 v-for 是强大的遍历指令,但其中的 in 和 of 关键字往往被开发者忽视。尽管它们的用法相似,但适用的场景和数据结构却各有不同。本文将详细探讨 v-for 中 in 和 of 的区别、适用场景以及在实际开发中的最佳使用时机。通过理解它们的差异,你将能够编写更加高效、简洁的 Vue.js 代码,灵活应对各种数据结构的遍历需求。
94 6
|
2月前
|
缓存 JavaScript
Vue 中 computed 与 method 的区别
【10月更文挑战第15天】computed 和 method 是 Vue 中两个重要的选项,它们在功能和特点上存在着明显的区别。理解并合理运用它们的区别,可以帮助我们构建更高效、更具可维护性的 Vue 应用。在实际开发中,要根据具体情况灵活选择使用,以满足不同的需求。
28 2
|
2月前
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等
|
2月前
|
JavaScript 前端开发 API
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
797 0
|
2月前
|
JavaScript 前端开发 UED
vue中vue-router路由懒加载(按需加载)的作用以及常见的实现方法
vue中vue-router路由懒加载(按需加载)的作用以及常见的实现方法
196 1
|
2月前
|
JavaScript 前端开发 UED
|
2月前
|
JavaScript 前端开发 API
前端技术分享:Vue.js 动态路由与守卫
【10月更文挑战第1天】前端技术分享:Vue.js 动态路由与守卫
|
2月前
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能