当前位置: 首页 > news >正文

Vue3-34-路由-路由配置参数 props

说明

路由的路径中可以携带参数,
形式如 :/a/:pname ,这个:表示这是个参数,pname :表示 参数名称。
在组件中,可以通过 当前路由对象params 属性来获取到这个参数,
当前路由对象 可以通过 useRoute() API 来获取到。

 基本的代码如下 :import { useRoute} from 'vue-router';const currentRoute = useRoute()// 获取对应的路径参数console.log(currentRoute.params.pname)

props : 的作用就是 简化上述的流程,
可以 通过 【props】的方式,将 路由中的参数直接注入到组件中,这样就可以直接使用了。

props 的三种使用方式

1、props 设置为 true ,直接传参;
2、传递对象;
3、通过函数的方式返回一个对象。

方式一 :直接传值

1、将 路由配置中的 props 设置为 true;
2、在组件中 通过 defineProps() 定义与路径参数同名的属性;
3、在组件中可以直接使用该参数了。

》 路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'// 引入组件
import componentC from "./componentC.vue";// 声明路由跳转的路径与组件的对应关系
const routsList = [{path:'/c100/:cname',component:componentC,props:true}
]// 创建路由的实例对象
const routerConfigObj = createRouter({history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀routes:routsList // 指定路由的配置列表
})// 导出路由的对象
export default routerConfigObj;

》组件内容

<template><div class="divb">这是组件C  : {{ cname }}<br></div>
</template><script setup lang="ts">// 引入路由相关的 APIimport { useRoute} from 'vue-router';// 声明 当前路由对象const currentRoute = useRoute()// 打印一下路由实例对象 和 当前路由对象console.log('C 组件 中 当前路由对象 :',currentRoute)// 获取参数对象const props = defineProps(['cname'])console.log('通过路由获取到的参数 :',props.cname)</script><style scoped>.divb{width: 200px;height: 100px;background: rgb(23, 177, 182);}
</style>

》运行效果
在这里插入图片描述

方式二 :传递对象

这种方式 适合 在路由中携带 静态参数的传参。

1、将 路由配置中的 props 设置为 一个对象;
2、在组件中 通过 defineProps() 定义与 路由配置中的 props 对象的属性同名的属性;
3、在组件中可以直接使用该参数了。

》 路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'// 引入组件
import componentC from "./componentC.vue";// 声明路由跳转的路径与组件的对应关系
const routsList = [{path:'/c200',component:componentC,props:{cname:'大家好'}}
]// 创建路由的实例对象
const routerConfigObj = createRouter({history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀routes:routsList // 指定路由的配置列表
})// 导出路由的对象
export default routerConfigObj;

》组件内容

<template><div class="divb">这是组件C  : {{ cname }}<br></div>
</template><script setup lang="ts">// 引入路由相关的 APIimport { useRoute} from 'vue-router';// 声明 当前路由对象const currentRoute = useRoute()// 打印一下路由实例对象 和 当前路由对象console.log('C 组件 中 当前路由对象 :',currentRoute)// 获取参数对象const props = defineProps(['cname'])console.log('通过路由获取到的参数 :',props.cname)</script><style scoped>.divb{width: 200px;height: 100px;background: rgb(23, 177, 182);}
</style>

》运行效果
在这里插入图片描述

方式三 :函数的方式返回props对象

1、将 路由配置中的 props 设置为 一个对象
2、在组件中 通过 defineProps() 定义与 路由配置中的 props 对象的属性同名的属性;
3、在组件中可以直接使用该参数了。

》 路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'// 引入组件
import componentC from "./componentC.vue";// 声明路由跳转的路径与组件的对应关系
const routsList = [{path:'/c300',component:componentC,props:(route:any) => {console.log('props 路由中的 参数route :',route)return {cname:'通过函数的方式返回 props 对象'}}},]// 创建路由的实例对象
const routerConfigObj = createRouter({history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀routes:routsList // 指定路由的配置列表
})// 导出路由的对象
export default routerConfigObj;

》组件内容

<template><div class="divb">这是组件C  : {{ cname }}<br></div>
</template><script setup lang="ts">// 引入路由相关的 APIimport { useRoute} from 'vue-router';// 声明 当前路由对象const currentRoute = useRoute()// 打印一下路由实例对象 和 当前路由对象console.log('C 组件 中 当前路由对象 :',currentRoute)// 获取参数对象const props = defineProps(['cname'])console.log('通过路由获取到的参数 :',props.cname)</script><style scoped>.divb{width: 200px;height: 100px;background: rgb(23, 177, 182);}
</style>

》运行效果

在这里插入图片描述

相关文章:

  • vue对日期的年、月、日进行增加,转换成指定格式的字符串(yyyy-MM-dd)
  • 2023年“中银杯”安徽省网络安全B模块(部分解析)
  • vivado 指定相对位置
  • 每天五分钟计算机视觉:揭秘迁移学习
  • 原生JS做别踩白块游戏
  • 算法系统学习(持续更新)
  • 栈实现后缀表达式的计算
  • 交换机02_共享式交换式
  • 了解并使用django-rest-framework-jwt
  • 简述Redis备份策略以及对应的实现机制
  • CMake入门教程【基础篇】HelloCMake
  • 数模学习day06-主成分分析
  • 记Android字符串资源支持的参数类型
  • LVGL 在framebuffer设备上的移植
  • Python控制程控电源(USB)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【391天】每日项目总结系列128(2018.03.03)
  • fetch 从初识到应用
  • java8-模拟hadoop
  • JavaScript设计模式之工厂模式
  • MySQL主从复制读写分离及奇怪的问题
  • python_bomb----数据类型总结
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Vue学习第二天
  • 当SetTimeout遇到了字符串
  • 构建二叉树进行数值数组的去重及优化
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 前端存储 - localStorage
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 实现简单的正则表达式引擎
  • 说说动画卡顿的解决方案
  • 算法-插入排序
  • 我从编程教室毕业
  • C# - 为值类型重定义相等性
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 计算机视觉入门
  • #LLM入门|Prompt#3.3_存储_Memory
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (二)JAVA使用POI操作excel
  • (二十三)Flask之高频面试点
  • (十一)图像的罗伯特梯度锐化
  • (一)Neo4j下载安装以及初次使用
  • .gitignore文件---让git自动忽略指定文件
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .Net 4.0并行库实用性演练
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net FrameWork总结
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET MVC 验证码
  • .Net(C#)自定义WinForm控件之小结篇