vue3获取页面跳转携带的参数

获取页面跳转携带的参数

在 Vue 3 中,使用 Vue Router 进行页面跳转并携带参数后,在目标页面获取这些参数的方式会因参数类型(路径参数、查询参数)而有所不同,以下为你详细介绍获取参数的方法。

前置准备

确保你已经安装并配置好了 Vue Router,可参考之前的配置步骤。假设路由配置如下:

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import User from '../views/User.vue';
import Search from '../views/Search.vue';const routes = [{path: '/',name: 'Home',component: Home},{path: '/user/:id',name: 'User',component: User},{path: '/search',name: 'Search',component: Search}
];const router = createRouter({history: createWebHistory(),routes
});export default router;

1. 获取路径参数

路径参数是在路由路径中定义的参数,例如 /user/:id 中的 :id 就是一个路径参数。

跳转页面时传递路径参数

使用声明式导航:

<template><div><!-- 携带 id 参数跳转到 User 页面 --><router-link :to="`/user/${userId}`">User</router-link></div>
</template><script setup>
import { ref } from 'vue';const userId = ref(1);
</script>

使用编程式导航:

import { useRouter } from 'vue-router';
import { ref } from 'vue';const router = useRouter();
const userId = ref(1);const goToUser = () => {router.push(`/user/${userId.value}`);
};
在目标页面获取路径参数

在目标页面(如 User.vue)中,使用 useRoute 钩子获取当前路由信息,从而获取路径参数。

<template><div><h1>User Page</h1><p>User ID: {{ userId }}</p></div>
</template><script setup>
import { useRoute } from 'vue-router';const route = useRoute();
const userId = route.params.id;
</script>

2. 获取查询参数

查询参数是在 URL 的 ? 后面传递的参数,例如 /search?keyword=Vue 3 中的 keyword 就是一个查询参数。

跳转页面时传递查询参数

使用声明式导航:

<template><div><!-- 携带 keyword 参数跳转到 Search 页面 --><router-link :to="{ path:'/search', query: {keyword:'Vue3' } }">Search</router-link></div>
</template><script setup>
// 无需额外的脚本代码
</script>

使用编程式导航:

import { useRouter } from 'vue-router';const router = useRouter();const goToSearch = () => {router.push({path: '/search',query: {keyword: 'Vue3'}});
};
在目标页面获取查询参数

同样使用 useRoute 钩子在目标页面(如 Search.vue)中获取查询参数。

<template><div><h1>Search Page</h1><p>Search Keyword: {{ keyword }}</p></div>
</template><script setup>
import { useRoute } from 'vue-router';const route = useRoute();
const keyword = route.query.keyword;
</script>

3. 注意事项

  • useRoute 钩子返回的 route 对象是响应式的,当路由发生变化时,参数也会相应更新。
  • 路径参数和查询参数可以同时使用,例如 /user/1?name=John,在目标页面可以分别通过 route.params.idroute.query.name 获取对应的参数值。

通过以上方法,你可以在 Vue 3 项目中方便地获取跳转页面时携带的参数。

1. 使用路径参数传递多个参数

路径参数适合传递一些必要的、与路由路径紧密相关的参数。

路由配置

在路由配置里定义多个路径参数:

const routes = [{path: '/detail/:id/:category',name: 'Detail',component: Detail}
];
传递参数
  • 声明式导航
<template><div><router-link :to="`/detail/${itemId}/${itemCategory}`">查看详情</router-link></div>
</template><script setup>
import { ref } from 'vue';const itemId = ref(1);
const itemCategory = ref('electronics');
</script>
  • 编程式导航
<template><div><button @click="goToDetail">查看详情</button></div>
</template><script setup>
import { useRouter } from 'vue-router';
import { ref } from 'vue';const router = useRouter();
const itemId = ref(1);
const itemCategory = ref('electronics');const goToDetail = () => {router.push(`/detail/${itemId.value}/${itemCategory.value}`);
};
</script>
获取参数

在目标组件(如 Detail.vue)中使用 useRoute 来获取参数:

<template><div><p>ID: {{ id }}</p><p>分类: {{ category }}</p></div>
</template><script setup>
import { useRoute } from 'vue-router';const route = useRoute();
const id = route.params.id;
const category = route.params.category;
</script>

2. 使用查询参数传递多个参数

查询参数适合传递可选的、不影响路由匹配的参数。

传递参数
  • 声明式导航
<template><div><router-link :to="{ path: '/detail', query: { id: itemId, category: itemCategory, sort: 'asc' } }">查看详情</router-link></div>
</template><script setup>
import { ref } from 'vue';const itemId = ref(1);
const itemCategory = ref('electronics');
</script>
  • 编程式导航
<template><div><button @click="goToDetail">查看详情</button></div>
</template><script setup>
import { useRouter } from 'vue-router';
import { ref } from 'vue';const router = useRouter();
const itemId = ref(1);
const itemCategory = ref('electronics');const goToDetail = () => {router.push({path: '/detail',query: {id: itemId.value,category: itemCategory.value,sort: 'asc'}});
};
</script>
获取参数

在目标组件中获取查询参数:

<template><div><p>ID: {{ id }}</p><p>分类: {{ category }}</p><p>排序: {{ sort }}</p></div>
</template><script setup>
import { useRoute } from 'vue-router';const route = useRoute();
const id = route.query.id;
const category = route.query.category;
const sort = route.query.sort;
</script>

3. 使用状态参数传递多个参数

状态参数不会显示在 URL 中,适合传递一些敏感信息或不想暴露在 URL 里的数据。

传递参数
  • 编程式导航
<template><div><button @click="goToDetail">查看详情</button></div>
</template><script setup>
import { useRouter } from 'vue-router';
import { ref } from 'vue';const router = useRouter();
const itemId = ref(1);
const itemCategory = ref('electronics');
const price = ref(99.99);const goToDetail = () => {router.push({name: 'Detail',params: { id: itemId.value },state: {category: itemCategory.value,price: price.value}});
};
</script>
获取参数

在目标组件中获取状态参数:

<template><div><p>ID: {{ id }}</p><p>分类: {{ category }}</p><p>价格: {{ price }}</p></div>
</template><script setup>
import { useRoute } from 'vue-router';const route = useRoute();
const id = route.params.id;
const category = route.state?.category;
const price = route.state?.price;
</script>

总结

  • 路径参数:适合传递必要的、与路由路径紧密相关的参数,会显示在 URL 中。
  • 查询参数:适合传递可选的、不影响路由匹配的参数,会显示在 URL 中。
  • 状态参数:适合传递敏感信息或不想暴露在 URL 里的数据,不会显示在 URL 中。

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

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

相关文章

Photoshop自定义键盘快捷键

编辑 - 键盘快捷键 CtrlShiftAltK 把画笔工具改成Q , 橡皮擦改成W , 涂抹工具改成E , 增加和减小画笔大小A和S 偏好设置 - 透明度和色域 设置一样颜色 套索工具 可以自定义套选一片区域 Shiftf5 填充 CtrlU 可以改颜色/色相/饱和度 CtrlE 合并图层 CtrlShiftS 另存…

C++ 学习:深入理解 Linux 系统中的冯诺依曼架构

一、引言 冯诺依曼架构是现代计算机系统的基础&#xff0c;它的提出为计算机的发展奠定了理论基础。在学习 C 和 Linux 系统时&#xff0c;理解冯诺依曼架构有助于我们更好地理解程序是如何在计算机中运行的&#xff0c;包括程序的存储、执行和资源管理。这对于编写高效、可靠…

第四节 docker基础之---dockerfile部署JDK

本地宿主机配置jdk 创建test目录&#xff1a; [rootdocker ~]# mkdir test 压缩包tomcat和jdk上传到root/test目录下&#xff1a; 本机部署Jdk 解压jdk&#xff1a; [rootdocker test]# tar -xf jdk-8u211-linux-x64.tar.gz [rootdocker test]# tar -xf apache-tomcat-8.5.…

【Linux】深入理解linux权限

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;Linux 目录 前言 一、权限是什么 二、用户和身份角色 三、文件属性 1. 文件属性表示 2. 文件类型 3. 文件的权限属性 四、修改文件的权限属性和角色 1. …

网络分析工具—WireShark的安装及使用

Wireshark 是一个广泛使用的网络协议分析工具&#xff0c;常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议&#xff0c;能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析&#xff1a; …

头条百度批量采集软件说明文档

旧版说明文档《头条号文章批量采集软件4.0版本说明文档&#xff01;头条/微头条文章批量采集》 头条的采集软件已经更新了好多个版本了&#xff0c;一直没有做详细的介绍文档&#xff0c;最近更新了一些功能进去&#xff0c;一块来写一下说明文档。 1、主界面 2、头条作者采集…

echarts 3d中国地图飞行线

一、3D中国地图 1. 一定要使用 echarts 5.0及以上的版本; 2. echarts 5.0没有内置中国地图了。点击下载 china.json&#xff1b; 3. 一共使用了四层地图。 &#xff08;1&#xff09;第一层是中国地图各省细边框和展示南海诸岛&#xff1b; &#xff08;2&#xff09;第二层是…

Unity游戏(Assault空对地打击)开发(7) 爆炸效果

效果 准备 首先请手搓一个敌军基地。 然后添加一个火焰特效插件或者自建。 爆炸脚本编写 新建一个脚本命名为Explode。 无需挂载到对象上。 首先是全部代码。 using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine…

NLP面试之-激活函数

一、动机篇 1.1 为什么要有激活函数&#xff1f; 数据角度&#xff1a;由于数据是线性不可分的&#xff0c;如果采用线性化&#xff0c;那么需要复杂的线性组合去逼近问题&#xff0c;因此需要非线性变换对数据分布进行重新映射;线性模型的表达力问题&#xff1a;由于线性模型…

windows server独立部署Qwen2.5-vl-7B

服务器配置信息 CPU&#xff1a;64G GPU&#xff1a;48G&#xff08;RTX 4090&#xff09; 一、使用conda下载模型 Qwen2.5-VL-7B-Instruct conda下载 conda create --name qwen python3.11 conda activate qwen 魔塔社区下载模型 pip install modelscope modelscope downl…

2025影视泛目录站群程序设计_源码二次开发新版本无缓存刷新不变实现原理

1. 引言 本设站群程序计书旨在详细阐述苹果CMS泛目录的创新设计与实现&#xff0c;介绍无缓存刷新技术、数据统一化、局部URL控制及性能优化等核心功能&#xff0c;以提升网站访问速度和用户体验。 2. 技术概述 2.1 无缓存刷新技术 功能特点&#xff1a; 内容不变性&#x…

在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合

文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码&#xff08;Positional Encoding&#xff09;1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码…

win10 llamafactory模型微调相关②

微调 使用微调神器LLaMA-Factory轻松改变大语言模型的自我认知_llamafactory 自我认知-CSDN博客 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 样本数据集 &#xff08;数据集管理脚本处需更改&#xff0c;见报错解决参考1&#xff09; 自我认知微…

从基础到人脸识别与目标检测

前言 从本文开始&#xff0c;我们将开始学习ROS机器视觉处理&#xff0c;刚开始先学习一部分外围的知识&#xff0c;为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本&#xff0c;系统采用Ubuntu20.04&#xff0c;ROS采用noetic。 颜…

06排序 + 查找(D2_查找(D2_刷题练习))

目录 1. 二分查找-I 1.1 题目描述 1.2 解题思路 方法&#xff1a;二分法&#xff08;推荐使用&#xff09; 2. 二维数组中的查找 2.1 题目描述 2.2 解题思路 方法一&#xff1a;二分查找&#xff08;推荐使用&#xff09; 3. 寻找峰值 3.1 题目描述 3.2 解题思路 方…

防火墙综合练习2

准备阶段 实验拓扑图如下&#xff1a; 试验要求如下&#xff1a; 需求一&#xff1a;完成相关配置 需求二&#xff1a;配置DHCP协议 需求三&#xff1a;防火墙安全区域配置 需求四&#xff1a;防火墙地址组信息 需求五&#xff1a;管理员 需求六&#xff1a;用户认证…

Word中Ctrl+V粘贴报错问题

Word中CtrlV粘贴时显示“文件未找到&#xff1a;MathPage.WLL”的问题 Word的功能栏中有MathType&#xff0c;但无法使用&#xff0c;显示灰色。 解决方法如下&#xff1a; 首先找到MathType安装目录下MathPage.wll文件以及MathType Commands 2016.dotm文件&#xff0c;分别复…

什么是FPGA?

目录 一、什么是 FPGA 二、FPGA 的发展历史 三、FPGA 的基本结构 可编程逻辑单元&#xff08;CLB&#xff09; 输入输出块&#xff08;IOB&#xff09; 块随机访问存储器模块&#xff08;BRAM&#xff09; 时钟管理模块&#xff08;CMM&#xff09; 四、FPGA 的工作原理…

ESP8266配置为TCP客户端,连接电脑和手机(使用Arduino配置)

一、简介 基于 ESP8266 的 Arduino 代码&#xff0c;其主要功能是将 ESP8266 连接到指定的 Wi-Fi 网络&#xff0c;并与指定 IP 地址和端口号的服务器建立 TCP 连接。在连接成功后&#xff0c;实现了串口和网络数据的双向传输&#xff0c;也就是将从串口接收到的数据通过 Wi-Fi…

【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)

目录 一、引言 二、MMoE&#xff08;Multi-gate Mixture-of-Experts&#xff0c;多门混合专家网络&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、…