Vue3快速上手(十六)Vue3路由传参大全

在这里插入图片描述
Vue3路由传参

一、传参的多种方式

1.1 拼接方式

这种方式适合传递单个参数的情况,比如点击查看详情,传个id这样的场景

传参:

<RouterLink to="/person?id=1" active-class="active">person</RouterLink>
<!-- 一般是这样写,动态传参 -->
<RouterLink :to="`/person?id=${obj.id}`" active-class="active">person</RouterLink>

接参:

import { useRoute } from 'vue-router';// 接收路由传参
let route = useRoute()
console.log('useRoute()-->', route);
console.log('接参:id = ', route.query.id);

在这里插入图片描述

1.2 对象方式

对象方式,适合一起传递多个参数,比较清晰明了,使用拼接方式虽然也能实现,但杂乱无章,不易维护,且容易出错。
传参:

<RouterLink :to="{path: '/person',query: {id: 1,name: '王大拿',age: 56}}" active-class="active">person
</RouterLink>

接参:

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';// 接收路由传参
let route = useRoute()
let {query} = toRefs(route)
console.log('接参:id = ', query.value.id);
console.log('接参:name = ', query.value.name);
console.log('接参:age = ', query.value.age);

在这里插入图片描述

1.3 params参数方式

params方式,需要在路由上设置需要传递参数的占位,如下:我在person后占位3个参数,且age为不必填项。id和name为必填项

// 创建1个路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多个路由配置 */routes: [{name: 'ren',path: '/person/:id/:name/:age?',component: PersonVue}]
});

也有2种方式,拼接路径方式、传递对象方式:

1.3.1 params拼接路径方式

传参:这里不传递age,因为上面设置age不是必传项

<RouterLink to="/person/1/王小拿" active-class="active">person</RouterLink>

接参:这里接params参数

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';// 接收路由传参
let route = useRoute()
console.log('route->', route);let {params} = toRefs(route)
console.log('接参:id = ', params.value.id);
console.log('接参:name = ', params.value.name);
console.log('接参:age = ', params.value.age);

在这里插入图片描述

1.3.2 params传递对象方式

** ☆这里和1.2里不一致的是**:用的是name和params传递。1.2里用个是:path和query传递。
传参:

<RouterLink :to="{name: 'ren',params: {id: 1,name: '王大拿',age: 56}
}" active-class="active">person
</RouterLink>

接参:这里接params参数

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';// 接收路由传参
let route = useRoute()
console.log('route->', route);let {params} = toRefs(route)
console.log('接参:id = ', params.value.id);
console.log('接参:name = ', params.value.name);
console.log('接参:age = ', params.value.age);

在这里插入图片描述

1.4 props方式

1.4.1 props方式1

基于1.3params方式传递参数,开启props为true。那么就可以通过defineProps(['id', 'name', 'age'])直接接收参数,并在页面上展示。

// 创建1个路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多个路由配置 */routes: [{name: 'ren',path: '/person/:id/:name/:age?',component: PersonVue,props: true}]
});

传参:

<RouterLink to="/person/1/王小拿" active-class="active">person</RouterLink>

接参:这里通过defineProps()接参数

<template><div class="person"><h3>ID{{ id }}</h3><h3>姓名:{{ name }}</h3><h3>年龄:{{ age }}</h3></div>
</template><script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

在这里插入图片描述

1.4.2 props方式2

通过props(route){}函数的方式,传递参数。这种方式既支持params对象方式,也支持query对象的方式。

(一)params对象方式:
需要占位,返回route.params

// 创建1个路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多个路由配置 */routes: [{name: 'ren',path: '/person/:id/:name/:age?',component: PersonVue,props(route){return route.params}}]
});

传参:

<RouterLink :to="{name: 'ren',params: {id: 1,name: '王大拿',age: 56}
}" active-class="active">person
</RouterLink>

接参:这里通过defineProps()接参数

<template><div class="person"><h3>ID{{ id }}</h3><h3>姓名:{{ name }}</h3><h3>年龄:{{ age }}</h3></div>
</template><script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

(二)query对象方式:
去掉占位,返回route.query

// 创建1个路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多个路由配置 */routes: [{name: 'ren',path: '/person',component: PersonVue,props(route){return route.query}}]
});

传参:

<RouterLink :to="{path: '/person',query: {id: 1,name: '王大拿',age: 56}
}" active-class="active">person
</RouterLink>

接参:这里通过defineProps()接参数

<template><div class="person"><h3>ID{{ id }}</h3><h3>姓名:{{ name }}</h3><h3>年龄:{{ age }}</h3></div>
</template><script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

效果都是一样的,浏览器地址不同:params是路径方式;query是参数拼接方式。
在这里插入图片描述

END

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity - 相机画面为黑白效果

一、 在Hierarchy中创建一个Global Volume,并设置它为局部作用 二、 将场景出现的作用域范围缩小至相机所在位置&#xff0c;将相机包含即可。 三、添加覆盖组件Color Adjustments,并将Saturation直接拉为-100 。 此时&#xff0c;相机拍摄画面为黑白&#xff0c;场景视图中…

1、Linux-安装

一、Linux和Windows的一些区别 1、Linux严格区分大小写——【Windows创建文件夹时不区分大小写】 2、Linux中所有内容都以文件形式存储&#xff0c;包括硬件 3、Linux不靠拓展名区分文件类型&#xff0c;而是可以通过读取文件开头的一些字节来区分。 但是在实际使用中一般要…

MYSQL---日志

1.日志的概述 日志是MySQL数据库的重要组成部分。日志文件中记录着MySQL数据库运行期间发生的变化&#xff1b;也就是说用来记录MySQL数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时&#xff0c;可以通过日志查看文件出错的原因&#xff0…

C语言中的字符魔法:大小写转换的艺术

引言 在C语言的世界里&#xff0c;字符处理是一项基础且重要的任务。字符作为编程中最基本的元素之一&#xff0c;承担着信息展示、数据交互等多重角色。特别是在处理文本信息时&#xff0c;字符的转换和识别显得尤为重要。大小写字母的转换就是其中一个常见的需求&#xff0c…

电子电气架构——汽车DoIP诊断通信建立流程

电子电气架构——汽车DoIP诊断通信建立流程 我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会…

4款塞纸条盲盒交友源码,可以对接公众号

一元盲盒交友源码/脱单盲盒源码/交友盲盒/恋爱盲盒公众号版 可以对接自己支付&#xff0c;全部自定义 没有任何bug版本&#xff0c;已经测试完全可以 免费源码&#xff0c;不包搭建指导 源码下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)

Globeland30米分辨率土地利用数据的下载

全国地理信息资源目录服务系统 先注册一下&#xff0c;登录 点击查询

国内chatgpt写作软件,chatgpt国内使用

随着人工智能技术的不断发展&#xff0c;国内涌现出了一些基于ChatGPT模型的写作软件&#xff0c;这些软件不仅能够实现智能化的文章写作&#xff0c;还支持批量生成各种类型的文章。本文将深入探讨国内ChatGPT写作软件&#xff0c;以及它们在批量文章创作方面的应用与优势。 C…

使用最新Hal库实现USART中断收发功能(STM32F4xx)

目录 概述 1 认识STM32F4XX的USART 1.1 USART 功能说明 1.2 USART的中断 1.3 USART 模式配置 1.4 USART的寄存器 2 使用STM32CubeMX 生成工程 2.1 配置参数 2.2 生成工程代码 3 实现软件功能 3.1 软件功能介绍 3.2 认识USART Hal库 3.2.1 初始化函数组 3.2.2 发送…

一周学会Django5 Python Web开发-Django5详细视图DetailView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

vue+element模仿实现云码自动验证码识别平台官网

一、项目介绍 项目使用传统vue项目结构实现&#xff0c;前端采用element实现。 element官网&#xff1a;Element - The worlds most popular Vue UI framework 云码官网地址&#xff1a;云码-自动验证码识别平台_验证码识别API接口_免费验证码软件 项目截图&#xff0c;支持…

ios csr 证书创建

苹果Certificate证书创建 1.开始创建。 登录苹果开发者网站 选择Certificates旁边的 ✙按钮 选择你想要的证书类型&#xff0c;手机开发的话一般是iOS APP Development 跟 iOS Distribution&#xff08;App Store and Ad Hoc&#xff09;&#xff0c;如果要Mac和iOS都可以发…

NCT 全国青少年编程图形化编程(Scratch)等级考试(一级)模拟测试H

202312 青少年软件编程等级考试Scratch一级真题 第 1 题 【 单选题 】 以下说法合理的是( ) A :随意点开不明来源的邮件 B :把密码设置成 abc123 C :在虚拟社区上可以辱骂他人 D :在改编他人的作品前&#xff0c; 先征得他人同意 正确答案&#xff1a; D 试题解析&…

C# aes加密解密byte数组

using System.Security.Cryptography; using System.Text;namespace AESStu01;public class AesHelper {// AES加密密钥和向量&#xff08;需要保密&#xff09; private static readonly string Key "";//16长度字符串数字混合private static readonly string IV …

LeetCode--42

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,…

PackagingTool_x64_v2.0.1.0图片转档打包二进制文件合并字库生成图片软件介绍

继去年12月份发布的打包软件PackagingTool v1.4.0.2之后&#xff0c;今年再度投入精力&#xff0c;完善了软件功能&#xff0c;同时开发了几个更加实用的工具&#xff0c;可助力UI界面的设计开发。当前最新版本为PackagingTool_x64_v2.0.1.0&#xff0c;该版本主界面如下&#…

Windows操作系统中各种功能、快捷键

目录 引言一、系统1.任务管理器&#xff08;当前进程属性&#xff09;2.画图板3.计算器4.CMD命令行窗口5.控制面板6.记事本7.写字板 二、浏览器1.打开开发者工具2.页面搜索 三、AcWing1.替换2.对多处进行相同操作3.光标变为下划线 引言 由于本专业是计算机专业&#xff0c;所以…

SpringBoot:Invalid bound statement (not found)的原因和解决方案

&#x1f413; 报错信息&#xff1a; &#xff08;无效绑定声明&#xff09;找不到 解析&#xff1a; 你的mapper实例对象和对应的mapper.xml对象未找到 &#x1f413; 排查&#xff1a; 情况一&#xff1a; 1.排除相对应的mapper实例对象路径是否正确 查看相对应的mapper中…

寒假作业Day 03

寒假作业Day 03 一、选择题 在C语言中&#xff0c;字符型指针char *p;通常用于指向字符数组&#xff08;即字符串&#xff09;的首字符。对于给定的选项&#xff0c;我们来分析每一个选项是否可以将字符串正确地赋值给p&#xff1a; A: pgetchar(); getchar()函数从标准输入读…

图的简单介绍

定义及术语 G(V,E)&#xff1a;图G的顶点集为V&#xff0c;边集为E。分为有向图和无向图两类。 顶点的度&#xff1a;与该结点相连的边的条数。 出度&#xff1a;顶点的出边条数 入度&#xff1a;顶点的入边条数 顶点的权值称为点权&#xff0c;边的权值称为边权。 存储 1.邻…