Vue3之路由的query参数和params参数用法
作者:小馒头学python
这篇文章主要介绍了Vue3之路由的query参数和params参数用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
路由中的参数
在 Vue 中,路由参数是指在访问不同页面时传递的信息。
它们可以用来动态地构建页面内容,实现页面间的数据传递和状态管理。
Vue 的路由系统提供了多种方式来处理路由参数,包括动态路由、查询参数和路由元信息等
query参数
我们接着使用上节用到的相关代码,在路径匹配后面我们加了一个问号,在问号后面我们加了一个参数
<template> <div class="plays"> <!--导航区--> <ul> <li v-for="play in newList" :key="play.id"> <RouterLink to="/plays/detail?a=1">{{play.title}}</RouterLink> </li> </ul> <!--展示区--> <div class="news-content"> <RouterView></RouterView> </div> </div> </template>
在地址栏我们可以清楚的看到,但是这也仅仅是浅浅看一看
接下来我们打开Detail.vue文件,我们导入一个useRoute
通过useRoute可以方便地访问当前路由的路径、参数、查询参数等信息,而不需要依赖于this.$route。
接下来我们应该实例化一下函数,之后我们就可以在上面的模版中尽显表达了
<template> <ul class="news-list"> <li>编号:{{ route.query.id }}</li> <li>标题:{{ route.query.title }}</li> <li>内容:{{ route.query.content }}</li> </ul> </template>
但是现在其实我们并不能匹配到id、title、content,可以匹配到的或许仅仅是a,然后显示出1,接下来我们要解决这个问题
<template> <div class="plays"> <!--导航区--> <ul> <li v-for="play in newList" :key="play.id"> <RouterLink :to="`/plays/detail?id=${play.id}`">{{play.title}}</RouterLink> </li> </ul> <!--展示区--> <div class="news-content"> <RouterView></RouterView> </div> </div> </template>
这样我们就可以点击哪个出现哪个对应的编号了
修改后的如下
<RouterLink :to="`/plays/detail?id=${play.id}&title=${play.title}&content=${play.content}`">{{play.title}}</RouterLink>
上面的是第一种写法
下面是第二种写法
<RouterLink :to="{ name:'detail', query:{ id:play.id, title:play.title, content:play.content } }" > {{play.title}} </RouterLink>
params参数
还是需要useRoute的导入,接下来我们需要修改一下index.ts中的path
后面的问号表示可有可无
path:'Detail/:id/:title/:content?',
模版这里也要修改一下
<template> <ul class="news-list"> <li>编号:{{ route.params.id }}</li> <li>标题:{{ route.params.title }}</li> <li>内容:{{ route.params.content }}</li> </ul> </template>
同样也有两种写法
</RouterLink> --> <!-- <RouterLink :to="`/news/detail/${play.id}/${play.title}/${play.content}`">{{play.title}}</RouterLink> --> <RouterLink :to="{ name:'Detail', params:{ id:play.id, title:play.title, content:play.content } }" > {{play.title}} </RouterLink>
综上所述:
1:传递params
参数时,若使用to
的对象写法,必须使用name
配置项,不能用path
。
2:传递params
参数时,需要提前在规则中占位。
区别和适用场景
- Params 参数 适用于标识资源、动态路由等需要作为路由一部分的信息,如 /user/:id;
- Query 参数 适用于配置项、筛选条件等不需要作为路由一部分的可选参数,如 /user?id=123。
总结
路由参数是 Vue 路由系统中非常重要的一部分,通过动态路由参数、查询参数和路由元信息,我们可以实现更灵活的页面导航和数据传递。
熟练掌握这些技巧可以帮助我们更好地构建复杂的单页面应用
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。