VUE中使用路由router跳转页面

devtools/2025/3/21 2:07:22/

在 Vue 中,this.$router.push 是用来跳转到另一个路由的方法,它可以传递参数。Vue Router 提供了多种方式来传递路由参数,常见的有 查询参数(query) 和 路由参数(params)。

1. 查询参数(Query Parameters)

查询参数是 URL 中 ? 后面的部分,格式通常是 key=value。查询参数的优势是可以在 URL 中显示,且不依赖于路由的定义。

路由跳转并传递查询参数
可以使用 this.$router.push 跳转到一个新的路由,并在 URL 中添加查询参数。

// 路由跳转,并传递查询参数
this.$router.push({ path: '/newPage', query: { id: 123, name: 'Tom' } });

这里,/newPage?id=123&name=Tom 是最终跳转后的 URL。可以传递一个对象,指定 path(目标路径)和 query(查询参数)。

在目标页面中获取查询参数

在目标页面中,可以通过 this.$route.query 来获取查询参数。

// 获取查询参数
const id = this.$route.query.id;  // 123
const name = this.$route.query.name;  // 'Tom'

2. 路由参数(Route Params)

路由参数是 URL 路径的一部分,通常在路由定义中使用动态路由(例如:/user/:id)。路由参数通常是隐藏在 URL 中的。

路由跳转并传递路由参数
可以在 this.$router.push 中通过 params 传递路由参数。

// 路由跳转,并传递路由参数
this.$router.push({ name: 'user', params: {  lsls: 123, namez: 'Tom' } });

这里,/user/123 是跳转后的 URL,id 就是路由参数。需要确保路由已经在路由配置中定义了动态参数。

路由配置示例(带参数)

const routes = [{path: '/user/:lsls/:namez',//可定义多个参数name: 'user',component: UserPage}
];

在目标页面中获取路由参数
在目标页面中,可以通过 this.$route.params 获取路由参数。

// 获取路由参数
const id = this.$route.params.lsls;  // 123
const id = this.$route.params.namez;  // Tom

注意事项:

路由参数(params) 只能通过 命名路由 或 动态路由 进行传递(/user/:id。如果在使用 query 参数时,路径会显示为?key=value,而 params 会直接出现在路径中,比如 /user/123。query 和 params 传递的参数方式不同,query 用于查询字符串,params 用于路径参数。 在组件的 mounted 或 created 生命周期钩子中,你可以访问 this.$route 来获取当前路由的参数,无论是 query 还是 params。

  • 避免使用 params 和 query 混合使用
  • 在访问路由参数时(如 this. r o u t e . p a r a m s 或 t h i s . route.params 或 this. route.paramsthis.route.query),需要注意你访问它们的时机。如果在组件加载前(如 created 钩子)访问,可能还无法获取到最新的路由信息。此时,可以通过 beforeRouteEnter 或 beforeRouteUpdate 钩子来获取更准确的信息。
beforeRouteEnter(to, from, next) {// 在进入页面时获取路由参数console.log(to.params.id);next();
}beforeRouteUpdate(to, from, next) {// 在路由变化时获取更新后的路由参数console.log(to.params.id);next();
}
  • 如果路由配置中使用了重定向(redirect),并且重定向的目标路径中包含参数,确保参数在重定向过程中正确传递。
const routes = [{ path: '/oldPage', redirect: { name: 'newPage', params: { id: 123 } } },{ path: '/newPage/:id', name: 'newPage', component: NewPage }
];
// 如果 /oldPage 被访问,将会重定向到 /newPage/123
  • 如果使用了动态路由,并且在路由中传递了 params,但目标组件没有相关的逻辑处理该参数时,可能会遇到问题。建议在组件中使用默认值,确保如果某些参数没有传递时,页面能够正常工作。
const id = this.$route.params.id || 'defaultId';

注:

  • params 用于路径参数,适用于动态路由;query 用于查询字符串参数,通常用于 URL 中显示。
  • 确保路由配置与传递的参数一致,避免混淆 params 和 query。
  • 在访问路由参数时,注意访问时机,推荐使用生命周期钩子如beforeRouteEnter,beforeRouteUpdate 处理路由变化。
  • 在跳转时,确保不混用两种参数,保持清晰的参数传递方式。

完整示例
Vue 应用,路由配置如下:

import Vue from 'vue';
import Router from 'vue-router';
import UserPage from './components/UserPage';Vue.use(Router);const routes = [{path: '/user/:id/:name?',  // 定义两个动态参数 id 和 name 可以使用?标识参数可选传递name: 'user',component: UserPage}
];const router = new Router({routes
});export default router;

在跳转时,可以使用如下代码:

// 跳转到 /user/123/Tom
this.$router.push({ name: 'user', params: { id: 123, name: 'Tom' } });

然后在 UserPage 组件中,可以获取到 id 和 name 参数:

export default {created() {const id = this.$route.params.id;const name = this.$route.params.name;// 如果可选参数没传则是undefindconsole.log(`User ID: ${id}, Name: ${name}`);}
};
  • 顺序:确保在路由定义中,参数的顺序与跳转时传递参数的顺序一致。

  • 可选参数:如果你希望某些参数是可选的,可以在路由配置中使用 ? 来标记这些参数为可选。


http://www.ppmy.cn/devtools/168779.html

相关文章

Python简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 1、基于FastAPI搭建Web服务器 # 导入FastAPI模…

rag-给一篇几百页的pdf,如何从中找到关键信息并汇总出关系图

小思考 对pdf肯定要做模糊chunk,能用模型切分就用模型切分,不能用模型就用规则,规则要尽可能保存连续文本,特殊数据格式(图、表格)必须完整保存,必须能被捕捉到。这些独立的表格or图数据&#…

【第14届蓝桥杯】软件赛CB组省赛

个人主页:Guiat 归属专栏:算法竞赛真题题解 文章目录 A. 日期统计B. 01串的熵C. 冶炼金属D. 飞机降落E. 接龙数列F. 岛屿个数G. 子串简写H. 整数删除I. 景区导游J. 砍树 正文 总共10道题。 A. 日期统计 【题目】日期统计 【分析】 【答案】235 【AC_…

STM32 - 在机器人领域,LL库相比HAL优势明显

在机器人控制器、电机控制器等领域的开发,需要高实时性、精细化控制或者对代码执行效率、占用空间有较高要求。所以,大家常用的HAL库明显不符合要求。再加上,我们学习一门技术,一定要学会掌握底层的原理。MCU开发的底层就是寄存器…

Spring WebFlux之流式输出

🎉🎉🎉🎉🎉🎉 欢迎访问的个人博客:https://swzbk.site/,加好友,拉你入福利群 🎉🎉🎉🎉🎉🎉 流式输…

辉视SIP:编织酒店智慧沟通的“声”动网络

在酒店这一追求极致服务与体验的行业中,辉视SIP广播对讲系统以其卓越的性能和广泛的应用场景,成为酒店内部沟通协作、应急响应及日常运营管理的得力助手,为提升酒店服务质量、创造卓越宾客体验开辟了新的路径。 一、即时通讯,构建…

【视频】H.264的码率和图像质量

1、简述 分辨率、帧率、I帧设置不变的情况下,码率过低时,IP摄像机如果没有足够的带宽来传输高质量的图像,便会抹掉一些细节,导致出现马赛克,尤其是动态性强的画面(比如:运动的云台、非固定的摄像头)。 2、计算码率 1)码率的基础理论公式为: 码率 (bps) = 分辨率像…

【eNSP实战】三层交换机使用ACL实现网络安全

拓图 要求: vlan1可以访问Internetvlan2和vlan3不能访问Internet和vlan1vlan2和vlan3之间可以互相访问PC配置如图所示,这里不展示 LSW1接口vlan配置 vlan batch 10 20 30 # interface Vlanif1ip address 192.168.40.2 255.255.255.0 # interface Vla…