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,一经查实,立即删除!

相关文章

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…

守护进程(Background Process)详解

什么是守护进程&#xff1f; 守护进程&#xff08;background process&#xff09;是Linux系统中一种特殊的进程类型&#xff0c;它们在后台运行&#xff0c;不与主线程竞争资源&#xff0c;通常用于处理系统性的任务。守护进程运行在内核空间&#xff0c;可以在系统负载较重时…

在cursor/vscode中使用godot C#进行游戏开发

要在 Visual Studio Code(VS Code)中启动 C#Godot 项目&#xff0c;可以按照以下步骤进行配置&#xff1a; 1.安装必要的工具 • 安装 Visual Studio Code&#xff1a;确保你已经安装了最新版本的 VS Code。 • 安装.NET SDK&#xff1a;下载并安装.NET 7.x SDK&#xff08;…

Photoshop自定义键盘快捷键

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

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

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

vue 主子表加校验问题

1.在table绑定的data中将数据源加上form&#xff0c;要将tabel包含在form表单中才行 <el-table :data"form.procurementPlanDevicesList" :row-class-name"rowProcurementPlanDevicesIndex"selection-change"handleProcurementPlanDevicesSelecti…

第四节 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. …

ComfyUI 安装教程:macOS 和 Linux 统一步骤

本教程将详细介绍如何在 macOS 和 Linux 上安装 ComfyUI。我们将从 安装 Anaconda 开始&#xff0c;到安装 PyTorch 和 ComfyUI&#xff0c;最后提供一些常见问题的解决方法。 macOS和linux安装步骤很相似 可以按照1️⃣安装anaconda2️⃣安装python3️⃣torch4️⃣comfyui Co…

网络分析工具—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;第二层是…

gitlab多项目流水线

背景是我有多个项目&#xff0c;希望其中一个项目被触发的时候&#xff0c;联动另外一个项目自动打包。然后我就看文档尝试操作了一下&#xff0c;所以有本文。 官方文档参考&#xff1a;https://gitlab.cn/docs/14.5/jh/ci/pipelines/multi_project_pipelines.html 不知道是不…

ffmpeg基本用法

一、用法 ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 说明&#xff1a; global options&#xff1a;全局选项&#xff0c;应用于整个 FFmpeg 进程&#xff0c;它们通常不受输入或输出部分的限制。 infile options&#xff1a;输入选…

Kong故障转移参数配置

一、Passive Health Check Healthchecks.Passive.Unhealthy.HttpStatuses 含义&#xff1a; 列出了被认为是“不健康”的HTTP状态码。目的&#xff1a; 当健康检查&#xff08;Healthcheck&#xff09;返回这些状态码时&#xff0c;系统会认为服务不健康&#xff0c;并可能触…

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;由于线性模型…

Leetcode面试经典150题刷题记录 —— 二分查找篇

Leetcode面试经典150题刷题记录-系列Leetcod面试经典150题刷题记录——数组 / 字符串篇Leetcod面试经典150题刷题记录 —— 双指针篇Leetcod面试经典150题刷题记录 —— 矩阵篇Leetcod面试经典150题刷题记录 —— 滑动窗口篇Leetcod面试经典150题刷题记录 —— 哈希表篇Leetcod…

Vue 和 dhtmlx-gantt 实现图表构建动态多级甘特图效果 ,横坐标为动态刻度不是日期

注意事项:1、横坐标根据日期转换成时间刻度在( gantt.config.scales);2、获取时间刻度的最大值(findMaxRepairTime);3、甘特图多级列表需注意二级三级每个父子id需要唯一(convertData) 安装依赖 npm install dhtmlx-gantt --save 在当前页引入和配置 dhtmlx-gantt im…

如何避免大语言模型中涉及丢番图方程的问题

希尔伯特第十问题是一个著名的数学问题,涉及不定方程(又称为丢番图方程)的可解答性。然而在大模型中,我们希望问题都是确定的可解的,或者说要尽可能的想办法避免不确定的不可解问题。由于丢番图方程问题是不可判定问题(即不存在一个有效的算法能够解决该类问题的所有实例…