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">

    // 引入路由相关的 API
    import { 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">

    // 引入路由相关的 API
    import { 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">

    // 引入路由相关的 API
    import { 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>

》运行效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/289128.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Ray Tracing: The Rest of Your Life] 笔记

前言 开年第一篇博客~ 整理了三四个小时才整理完orz。 这一部分是光线追踪三部曲的最后一部&#xff0c;主要介绍了蒙特卡洛积分、重要性采样等内容。场景上没有什么大的改变&#xff0c;基本上就是在Cornell Box中渲染的&#xff0c;本篇主要在加速收敛&#xff0c;提升渲染效…

踩坑记录-安装nuxt3报错:Error: Failed to download template from registry: fetch failed;

报错复现 安装nuxt3报错&#xff1a;Error: Failed to download template from registry: fetch failednpx nuxi init nuxt-demo 初始化nuxt 项目 报错 Error: Failed to download template from registry: fetch faile 解决方法 配置hosts Mac电脑&#xff1a;/etc/hostswin电…

java StringBuilder对比String的优点和15个经典案例

文章目录 区别&#xff1a;1. 字符串拼接2. 构建动态查询语句3. 格式化输出4. 字符串反转5. 插入字符串6. 删除子串7. 字符串替换8. 构建复杂JSON或XML结构9. 处理用户输入的大量数据10. 动态生成HTML页面11. 处理字符串格式转换12. 实现字符串缓冲区13. 拼接大量字符串数组元素…

LLVM(简介)

历史 LLVM(low level virtual machine)起源于伊利诺伊大学的一个编译器实验项目&#xff0c;目前已经发展成一个集编译器和工具链为一体的商业开源项目&#xff0c;因此其英文名称的含义被扩大&#xff0c;不再仅仅是字面意思。其创始人为 Chris Lattner。LLVM项目遵循的开源许…

java数据结构与算法刷题-----LeetCode746. 使用最小花费爬楼梯

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

嵌入式系统(二)单片机基础 | 单片机特点 内部结构 最小系统 电源 晶振 复位

上一篇文章我们介绍了嵌入式系统 嵌入式系统&#xff08;Embedded System&#xff09;是一种特定用途的计算机系统&#xff0c;它通常嵌入在更大的产品或系统中&#xff0c;用于控制、监测或执行特定的任务。这些系统通常由硬件和软件组成&#xff0c;旨在满足特定的需求&…

SQL窗口函数大小详解

窗口大小 OVER 子句中的 frame_clause 选项用于指定一个滑动的窗口。窗口总是位于分区范围之内&#xff0c;是分区的一个子集。指定了窗口之后&#xff0c;分析函数不再基于分区进行计算&#xff0c;而是基于窗口内的数据进行计算。 指定窗口大小的语法如下&#xff1a; ROWS…

了解并使用django-rest-framework-jwt

一 JWT认证 在用户注册或登录后&#xff0c;我们想记录用户的登录状态&#xff0c;或者为用户创建身份认证的凭证。我们不再使用Session认证机制&#xff0c;而使用Json Web Token&#xff08;本质就是token&#xff09;认证机制。 Json web token (JWT), 是为了在网络应用环…

2023年12月GESP C++七级编程题转Python真题解析

七、2023年12月GESP C(Python)七级编程题 2023年12月GESP Python最高六级&#xff0c;但C与Python同级编程题相同。本篇引用2023年12月GESPC七级编程题&#xff0c;用Python实现。 【七级编程题1】 【试题名称】&#xff1a;商品交易 时间限制&#xff1a;1.0 s 内存限制&…

CMake入门教程【核心篇】引用子模块.cmake文件(include)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 include子模块举个例…

四、HTML 属性

属性是 HTML 元素提供的附加信息。 一、HTML 属性 HTML 元素可以设置属性属性可以在元素中添加附加信息属性一般描述于开始标签属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 二、 属性实例 HTML 链接由 <a> 标签定义。链接的地…

HC-05蓝牙模块--------手机与STM32通信(代码编写)(上位机配置)保姆级教程

⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩因为之前无论是电赛还是做项目&#xff0c;都用到了蓝牙模块&#xff0c;如&#xff1a;手机和stm32的通信&#xff0c;电赛中的双车通信&#xff0c;还是遥感小车的…

教育机构培训系统小程序功能清单

制作一款适合自己的教育机构培训系统小程序&#xff0c;可以为学员提供更便捷的学习体验&#xff0c;同时提高机构的教学效率。今天将详细介绍如何使用乔拓云平台制作教育机构培训系统小程序。 在浏览器搜索乔拓云&#xff0c;登录到后台&#xff0c;选择教育系统并点击进入。在…

使用MQTT.JS创建一个网页版的MQTT客户端

一、MQTT.JS介绍 MQTT.js 是一个开源的 MQTT 协议的客户端库&#xff0c;使用 JavaScript 编写&#xff0c;主要用于 Node.js 和 浏览器环境中。是JavaScript 环境下的 MQTT 客户端库。可以用于微信小程序、支付宝小程序等定制浏览器环境。 我们可以直接在HTML文件中进行调用…

静态代理、JDK动态代理、CGLIB动态代理以及JDK和CGLIB动态代理的区别

代理 什么是代理&#xff1f;两个设计原则三要素 静态代理静态代理的实现定义接口-定义行为静态代理 -> 目标角色静态代理-> 代理角色静态代理测试 特点 JDK动态代理newProxyInstance获取代理对象通过代理对象实现目标对象的功能特点 Java动态代理类中的invoke是怎么调用…

P8 RV1126推流 —— 摄像头和咪头模块初始化

前言 从本章开始我们将要学习嵌入式音视频的学习了 &#xff0c;使用的瑞芯微的开发板 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《Linux C应用编程&#xff08;概念类&#xff09;_C…

对偶问题的基本性质

写于&#xff1a;2024年1月3日晚 修改于&#xff1a; 原规划与对偶规划 原规划对偶规划 max ⁡ z C T X s.t. { A X ≤ b , 其中 X ( m ∗ 1 ) X ≥ 0 \begin{aligned} & \max \mathrm{z}\mathbf{C}^T \mathbf{X} \\ & \text { s.t. }\left\{\begin{array}{l}\mat…

RFID在物流、供应链管理、工业自动化等领域的广泛应用

随着物联网技术的不断发展&#xff0c;RFID&#xff08;无线射频识别&#xff09;技术作为一种自动识别和跟踪技术&#xff0c;在物流、供应链管理、工业自动化等领域得到了广泛应用。本文将介绍RFID解决方案及其应用场景。 一、RFID技术概述 RFID是一种通过无线电波通信&…

Apache的配置与应用

目录 1、Apache简介 2、Apache连接保持 3、Apache的访问控制 3.1、客户机地址限制 3.2、用户授权限制 &#xff08;1&#xff09;创建用户认证数据文件 &#xff08;2&#xff09;添加用户授权配置 &#xff08;3&#xff09;验证用户访问授权 4、Apache日志分割 4…

ALSA学习(5)——ASoC架构中的Machine

参考博客&#xff1a;https://blog.csdn.net/DroidPhone/article/details/7231605 &#xff08;以下内容皆为原博客转载&#xff09; 文章目录 一、注册Platform Device二、注册Platform Driver三、初始化入口soc_probe() 一、注册Platform Device ASoC把声卡注册为Platform …