Vue-5 路由参数的传递和获取(query 和 params),导航守卫和路由元信息,History模式

本文详细介绍了Vue中路由参数的传递,包括query和params的区别,如何在组件中获取参数。同时讲解了导航守卫的使用,如beforeRouteEnter等,以及路由元信息的设置和获取。最后讨论了History模式,解释了其在不使用#的情况下实现页面跳转的原理,并提到了后台配置的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue-5 路由传参的几种方式(query和params),获取路由参数,导航守卫和路由元信息,History模式

除了 props$emit 之外,路由时也可以携带数据,即通过路由传参。

一、路由参数的传递和接收

1. 动态路由的匹配

示例需求:有个商品详情的组件,点击任何商品都会渲染这个组件,点击商品时向详情组件传递商品的 id,详情组件在被渲染时接收这个 id,请求对应的数据,渲染在详情组件上。

可以在配置路由时直接为参数预留路径:

// router>index.js 的routes
routes: [
    {
   
        // 在路径中预留参数的位置
        path: '/good-detail/:id',
        component: Detail
    }
]

调用:

<!-- 调用路由时向路由传参 -->
<router-link to="/good-detail/1">商品1</router-link>
<router-link to="/good-detail/2">商品2</router-link>
<router-link to="/good-detail/3">商品3</router-link>

<!-- 渲染详情组件 -->
<router-view />

接收参数:

<!-- 详情组件的结构中接收 -->
<div class="detail">
    <!-- 用 $route 获取路由信息,从路由信息的 params 中接收参数  -->
    {
  { this.$route.params.id }}
</div>
// 如果想要在组件刚开始加载时获取 id,并且根据 id 做一些数据操作,那就在对应的钩子函数中,获取路由参数
created() {
    // detail 组件生命周期的 created 钩子函数
    const id = this.$route.params.id;
    // code
}

createdmounted 函数,只能在第一个商品被渲染时响应,detail 组件在第一次被渲染之后,虽然路由变了,但是 createdmounted 不会重新执行。这种情况下,可以用 updated 来动态获取路由参数。也可以用 watch 来监听路由的变化。

watch: {
   
    // to 和 from 分别表示路由切换前后的路由元信息
    '$route'(to, from) {
   
      //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锋利的二丫

如果对您有帮助,请博主喝杯奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值