Vue3中路由规则的props配置详解
创作时间:
作者:
@小白创作中心
Vue3中路由规则的props配置详解
引用
CSDN
1.
https://blog.csdn.net/null18/article/details/136749309
在Vue3中,使用Vue Router进行路由管理时,可以通过配置路由规则的props属性,将路由参数传递给组件。这样可以使路由参数直接作为组件的属性,在组件中使用更加方便。
在路由配置中使用 props
在定义路由规则时,可以通过设置props属性来指定如何将路由参数传递给组件。props可以是一个布尔值、对象或函数。
props的第一种写法
我们来回顾一下上节对于Detail.vue中的代码,使用的是params参数:
<template>
<ul class="news-list">
<li>编号:{{ route.params.id }}</li>
<li>标题:{{ route.params.title }}</li>
<li>内容:{{ route.params.content }}</li>
</ul>
</template>
<script setup lang="ts" name="About">
import { useRoute } from 'vue-router'
let route = useRoute()
</script>
<style scoped>
.news-list {
list-style: none;
padding-left: 20px;
}
.news-list>li {
line-height: 30px;
}
</style>
如果我们不想在模版中写route的话,我们需要使用toRefs进行结构,下面的博客或许会帮助你:
【Vue3】toRefs和toRef在reactive中的一些应用
修改后的代码如下,和之前的运行结果是一样的:
<template>
<ul class="news-list">
<li>编号:{{ params.id }}</li>
<li>标题:{{ params.title }}</li>
<li>内容:{{ params.content }}</li>
</ul>
</template>
<script setup lang="ts" name="About">
import { toRefs } from 'vue'
import { useRoute } from 'vue-router'
let route = useRoute()
let {params} = toRefs(route)
</script>
<style scoped>
.news-list {
list-style: none;
padding-left: 20px;
}
.news-list>li {
line-height: 30px;
}
</style>
这样我们就可以省略了route,但是如果我们还想省略params呢,该怎么做
接下来我们引入props,来实现无需写route和params
首先我们需要在index.ts中加上一句
再之后我们就在Detail.vue的ts里面加上一句就可以完美的实现之前的代码了:
<script setup lang="ts" name="About">
defineProps(['id','title','content'])
</script>
完整代码如下:
<template>
<ul class="news-list">
<li>编号:{{ id }}</li>
<li>标题:{{ title }}</li>
<li>内容:{{ content }}</li>
</ul>
</template>
<script setup lang="ts" name="About">
defineProps(['id','title','content'])
</script>
<style scoped>
.news-list {
list-style: none;
padding-left: 20px;
}
.news-list>li {
line-height: 30px;
}
</style>
上面仅仅是第一种写法,大概意思就是将路由收到的所有params参数作为props传给路由组件
props的第二种写法
这种写法是使用函数的形式:
props(route){
return route.params
}
当然也是可以使用query的:
props(route){
return route.query
}
但是使用query别忘了修改点地方
事实证明,也是可以实现的
props的第三种写法
第三种写法是对象写法
对象写法相对于函数写法更加静态,因为它直接将固定的值传递给组件属性,无法根据路由的动态变化来改变传递的值。而函数写法可以根据需要动态地返回不同的属性值,更加灵活。因此,在需要根据路由动态变化属性值的情况下,使用函数写法更加合适;而在属性值固定的情况下,使用对象写法可能更为简洁明了
就是较为固定,如果想动态还是函数比较好
总结
通过合理配置路由规则的props属性,可以使路由参数更加灵活地传递给组件。
热门推荐
22个精选体育游戏,助力3-6岁幼儿协调、灵敏和平衡性在玩乐中全面提升!
美式肌肉车三剑客是什么车 美系车的代表车型了解一下
风力发电的经济账:700万投资何时能回本?
预防老年抑郁症 多发展兴趣爱好
圣经知识|犹太节期与庆典
老年综合评估,老年人的量身定制
面条如何煮才好吃
玉龙雪山:自然织就的世界旅游诗篇
项目管理ET和LT如何计算
原神旅行者风主圣遗物搭配/武器推荐/配队攻略介绍
职工医保可以终身享受,医保断缴之后的一些补救措施!
如何寻找低估的股票?这种寻找方法的可靠性如何?
【卫生香百科】卫生香有毒吗?家居熏香品香之道
官方确认!惠州满足地铁申报条件,14号线惠州段将成真?
山楂可以减肥降脂吗?科学解析与实用建议
录像算什么证据
汽车需要使用燃油宝吗?使用方法和注意事项全解析
降压食典:高血压患者的饮食指南
海钓鲈鱼技巧全攻略:从季节到流水的全方位指南
2024年大学生人际交往能力提升策略
处理工作中人际冲突的7条基本原则
探析完美犯罪:悬疑片中的法理与心理
从“知道”到“做到”,到底有多远?
HTML5入门指南:核心特性、应用场景与未来发展
恶性黑色素瘤复发症状有哪些
恶心干呕、呕吐物带白色泡沫怎么办
战争研究·敦刻尔克的教训,双方都学到些什么
贴现是什么意思
博物馆藏品:和田玉云龙纹玉器的独特魅力
劳动合同丢失怎么办?多种方式证明劳动关系