Vue3路由跳转并传递参数

文章目录

  • 1. 前言
  • 2. 准备工作
    • 2.1 编写路由规则
    • 2.2 源页面
    • 2.3 目标页面
  • 3. 源页面如何传递参数给目标页面
    • 3.1 通过 router-link 标签传递参数(很少使用)
    • 3.2 通过 js 代码传递参数(经常使用)
  • 4. 目标页面接收源页面传递过来的参数
  • 5. 完整的示例代码

1. 前言

路由跳转并传递参数的应用十分广泛,以下是一些常见的应用场景:

  • 商品详情页:当用户在商品列表页点击一个商品时,通常会跳转到该商品的详情页。可以将商品的ID作为参数传递给商品详情页,商品详情页组件就能够根据商品ID获取到商品的详细信息
  • 视频详情页:当用户在视频列表页点击一个视频时,通常会跳转到该视频的详情页。可以将视频的ID作为参数传递给视频详情页,视频详情页组件就能够根据视频ID获取到视频的详细信息
  • 用户个人资料页:在用户点击查看或编辑个人资料时,路由会跳转到个人资料页,并向个人资料页面传递用户的ID或者其它唯一标识符,个人资料页组件可以根据这个参数来获取用户的个人信息
  • 文章阅读页:当用户点击一个文章标题或摘要时,应用会将用户带到文章阅读页。在这个过程中,文章的ID或其他唯一标识符会作为参数传递,文章阅读页组件就可以根据这个参数获取相应的文章内容
  • 搜索结果页:用户在搜索框输入关键词后,通常会跳转到搜索结果页。可以将搜索关键词作为参数传递给搜索结果页,页面组件会根据这个参数来请求和展示相关的搜索结果

本文主要介绍在Vue3工程(使用 setup 语法)中如何进行路由跳转并传递参数

2. 准备工作

2.1 编写路由规则

src/router/index.js文件中编写路由规则

import {createRouter, createWebHistory} from 'vue-router'
import HomeView from '@/views/HomeView.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'homeView',component: HomeView},{path: '/sourceView',name: 'sourceView',component: () => import('@/views/SourceView.vue')},{path: '/targetView',name: 'targetView',component: () => import('@/views/TargetView.vue')}]
})export default router

2.2 源页面

src/views/SourceView.vue

<template><div><h1>源页面</h1></div>
</template><script setup></script><style scoped></style>

2.3 目标页面

src/views/TargetView.vue

<template><div><h1>目标页面</h1></div>
</template><script setup></script><style scoped></style>

3. 源页面如何传递参数给目标页面

3.1 通过 router-link 标签传递参数(很少使用)

在路径后面添加需要传递的参数,如果需要传递多个参数,多个参数之间用&符号隔开


template部分(to属性前面记得加上:

<router-link :to="`/targetView?username=${username}&gender=${gender}`">跳转到目标页面</router-link>

script部分

const username = ref('zhangsan')
const gender = ref(1)

3.2 通过 js 代码传递参数(经常使用)

template部分

<button @click="jumpToTargetView">跳转到目标页面</button>

script部分

import router from '@/router/index.js'
import {ref} from 'vue'const username = ref('zhangsan')
const gender = ref(1)const jumpToTargetView = () => {router.push({path: '/targetView',query: {username: username.value,gender: gender.value}})
}

4. 目标页面接收源页面传递过来的参数

template部分

用户名:{{ username }}
<hr>
性别:{{ gender }}

script部分(在onMounted钩子函数中编写接收参数的代码

import {onMounted, ref} from 'vue'
import {useRoute} from 'vue-router'const route = useRoute()const username = ref('')
const gender = ref(1) // 1男 2女onMounted(() => {username.value = route.query.usernamegender.value = route.query.gender
})

5. 完整的示例代码

src/views/SourceView.vue

<template><div><h1>源页面</h1><!--通过router-link标签跳转--><router-link :to="`/targetView?username=${username}&gender=${gender}`">跳转到目标页面</router-link><!--通过js代码跳转--><button @click="jumpToTargetView">跳转到目标页面</button></div>
</template><script setup>
import router from '@/router/index.js'
import {ref} from 'vue'const username = ref('zhangsan')
const gender = ref(1)const jumpToTargetView = () => {router.push({path: '/targetView',query: {username: username.value,gender: gender.value}})
}</script><style scoped></style>

src/views/TargetView.vue

<template><div><h1>目标页面</h1>用户名:{{ username }}<hr>性别:{{ gender }}</div>
</template><script setup>
import {onMounted, ref} from 'vue'
import {useRoute} from 'vue-router'const route = useRoute()const username = ref('')
const gender = ref(1) // 1男 2女onMounted(() => {username.value = route.query.usernamegender.value = route.query.gender
})
</script><style scoped></style>

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

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

相关文章

台积电代工!Intel新AI PC芯片Lunar Lake发布:AI算力120TOPS!

根据英特尔披露的数据显示&#xff0c;Lunar Lake的GPU性能提升50%、NPU内核的AI算力增加了四倍、SoC耗电量减少40%、GPU AI算力增加3.5倍&#xff0c;整个SoC的算力超过了120TOPS。 6月4日&#xff0c;英特尔CEO帕特基辛格在COMPUTEX 2024上发表主题演讲&#xff0c;正式公布…

在 React 应用中,怎么封装一个路由权限

在React应用中,封装一个路由权限控制通常涉及到几个关键步骤。这通常涉及到React Router(特别是React Router v5或v6)和自定义的权限检查逻辑。以下是一个基本的步骤指南,以及如何使用React Hooks(如useEffect和useState)来封装路由权限: 定义权限检查逻辑: 首先,你需…

如何确保redis缓存中的数据与数据库一致

一、双写模式&#xff1a; 在写入数据库时&#xff0c;也写入缓存。 二&#xff1a;失效模式&#xff1a; 在写入新数据后&#xff0c;删除缓存中数据&#xff0c;下次请求时查询数据库&#xff0c;并把查到的最新数据写入缓存。 不管是双写模式还是失效模式&#xff0c;缓…

Letcode-Top 100二叉树专题

94. 二叉树的中序遍历 方法一&#xff1a;递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeN…

SpringBoot的学习要点

目录 SpringBoot 创建项目 配置文件 注解 命名规范 SpringBoot整合第三方技术 …… 中文文档&#xff1a;Spring Boot 中文文档 SpringBoot Spring Boot 是基于 Spring 框架的一种快速构建微服务应用的方式它主要提供了自动配置、简化配置、运行时应用监控等功能它…

大水文之------端午练练JS好了

最近有点不太知道要干啥了&#xff0c;昨天看了集cocos的介绍&#xff0c;下载了个DashBoard&#xff0c;看了看里面的内容&#xff0c;确实有点小震惊&#xff0c;还有些免费的源码可以学习&#xff0c;挺好的。 昨天学习ts&#xff0c;感觉自己的js水平好像不太行&#xff0c…

Functional ALV系列 (10) - 将填充FieldCatalog封装成函数

在前面的博文中&#xff0c;已经讲了封装的思路和实现&#xff0c;主要是利用 cl_salv_data_descr>read_structdescr () 方法来实现。在这里&#xff0c;贴出代码方便大家参考。 编写获取内表组件的通用方法 form frm_get_fields using pt_data type any tablechanging…

排序---基数排序

前言 个人小记 一、简介 基数排序是一种非比较排序&#xff0c;所以排序速度较快&#xff0c;当为32位int整数排序时&#xff0c;可以将数分为个位十位分别为2^16,使得拷贝只需要两轮&#xff0c;从而达到2*n&#xff0c;然后给一个偏移量&#xff0c;使得可以对负数排序。以…

C++期末复习提纲(血小板)

目录 1.this指针 2.静态成员变量 3.面向对象程序设计第一阶段 4.面向对象程序设计第二阶段 5.面向对象程序设计第三阶段 6.简答题 &#xff08;1&#xff09;拷贝构造函数执行的三种情况&#xff1a; &#xff08;2&#xff09;虚析构函数的作用&#xff1a; &#xff…

55.ReentrantReadWriteLock应用于缓存

简单的缓存案例 模拟一个数据层dao @Slf4j public class GenericDao {public <T> T queryOne(Class<T> beanClass, String sql, Object... args) {try {log.debug("进入数据库查询.....");Constructor<T> constructor = beanClass.getDeclaredCo…

如何看待华为去google化自己做鸿蒙系统,对开发人员有什么影响

华为去Google化并自主研发鸿蒙系统是一个重要的战略决策&#xff0c;这一决策对开发人员产生了深远的影响。以下是对这一决策及其对开发人员影响的详细分析&#xff1a; 一、华为去Google化自主研发鸿蒙系统的背景 在美国的技术封锁和限制下&#xff0c;华为面临着使用Androi…

Python基础——字符串

一、Python的字符串简介 Python中的字符串是一种计算机程序中常用的数据类型【可将字符串看作是一个由字母、数字、符号组成的序列容器】&#xff0c;字符串可以用来表示文本数据。 通常使用一对英文的单引号&#xff08;&#xff09;或者双引号&#xff08;"&#xff09;…

html接口响应断言

接口响应值除类json格式&#xff0c;还有html格式 断言步骤 第一步&#xff1a;替换空格replace 原本返回的格式和网页内容一致&#xff0c;每行前面有很多空格&#xff0c;需要去除这些空格 第二步&#xff1a;分割split 因为行与行之前有回车符&#xff0c;所以把回车符替…

Spring之SpringMVC源码

SpringMVC源码 一、SpringMVC的基本结构 1.MVC简介 以前的纯Servlet的处理方式&#xff1a; Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String type req.getParameter(Constant.REQUEST_PA…

【Java面试】十六、并发篇:线程基础

文章目录 1、进程和线程的区别2、并行和并发的区别3、创建线程的四种方式3.1 Runnable和Callable创建线程的区别3.2 线程的run和start 4、线程的所有状态与生命周期5、新建T1、T2、T3&#xff0c;如何保证线程的执行顺序6、notify和notifyAll方法有什么区别7、wait方法和sleep方…

QT-轻量级的笔记软件MyNote

MyNote v2.0 一个轻量级的笔记软件&#x1f4d4; Github项目地址: https://github.com/chandlerye/MyNote/tree/main 应用简介 MyNote v2.0 是一款个人笔记管理软件&#xff0c;没有复杂的功能&#xff0c;旨在提供便捷的笔记记录、管理以及云同步功能。基于Qt 6.6.3 个人开…

MATLAB入门知识

目录 原教程链接&#xff1a;数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/ 前言 历史记录 脚本文件&#xff08;.m&#xff09; Matlab帮助系统 注释 ans pi inf无穷大 -inf负无穷大 i j虚数单位 eps浮点相对精度 0/&a…

Edge浏览器视频画中画可拉动进度条插件Separate Window

平时看一些视频的时候&#xff0c;一般需要编辑一些其他的东西&#xff0c;于是开启画中画&#xff0c;但是画中画没有进度条&#xff0c;需要大幅度的倒退前进得回到原视频&#xff0c;很麻烦。这里推荐插件Separate Window&#xff0c;可实现画中画进度条拉动和播放sudu的调节…

Transparent 且 Post-quantum zkSNARKs

1. 引言 前序博客有&#xff1a; SNARK原理示例SNARK性能及安全——Prover篇SNARK性能及安全——Verifier篇 上图摘自STARKs and STARK VM: Proofs of Computational Integrity。 上图选自&#xff1a;Dan Boneh 斯坦福大学 CS251 Fall 2023 Building a SNARK 课件。 SNARK…

工业通讯现场中关于EtherCAT转TCPIP网关的现场应用

在当今工业自动化的浪潮中&#xff0c;EtherCAT技术以其高效、实时的特性成为了众多制造业的首选。然而&#xff0c;随着工业互联网的发展&#xff0c;对于数据的远程访问和云平台集成的需求日益增长&#xff0c;这就需要将EtherCAT协议转化为更为通用的TCP/IP协议。于是开疆智…