Vue3中axios如何使用路由(useRouter)以及自定义hooks中使用useRouter报错问题(已踩坑)

Vue3 更新带来了vue-router的4.x版本,其中useRoute和useRouter成为获取路由信息的主要方式,但它们必须在setup函数内使用。当需要在自定义hooks或axios中访问路由时,可以使用Vrouter.currentRoute.value和Vrouter来替代。通过监测Vrouter.currentRoute.value.query来响应路由变化,并避免直接监听整个router对象。

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

随着vue3的更新,vue-router也更新到了4.x

useRouter
相当于vue2的this.$router全局的路由实例,是router构造方法的实例

useRoute
相当于vue2的this.$route表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的 route路由记录


但是在一次使用中发现useRoute, useRouter必须写到setup中,详见Vue路由强行在函数中使用这两会报undefined,导致无法获取路由数据和路由方法

那么想要在自定义hooks以及axios中使用路由怎么办呢?

// import { useRoute, useRouter } from "vue-router"
import Vrouter from "@/router"
const route = Vrouter.currentRoute.value
const router = Vrouter

监测当前路由同理

watch(() => Vrouter.currentRoute.value.query,
    (query) => {
      ListParams.value = Object.assign(params,query)
      res.value = handleParams()
      })

注意: 千万别直接监测整个router对象

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值