You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt2中如何全局监听路由变化并执行指定操作?

Nuxt.js v2 全局监听路由变化方案

你的插件代码仅在应用初始化时执行一次,无法触发每次路由切换。要实现全局监听路由变化,只需在插件中添加路由钩子或Vue实例的路由监听即可,无需修改每个布局。

方案一:使用Vue Router全局后置钩子

这是最直接的方式,利用Vue Router的afterEach钩子,每次路由切换完成后自动执行指定函数:

export default ({ app, route }, inject) => {
  // 定义路由变化时要执行的逻辑
  const handleRouteChange = (to, from) => {
    console.log('路由切换到:', to)
    console.log('路由从:', from)
    // 在这里添加你的Cookie追踪代码
  }

  // 页面首次加载时执行一次(可选,根据需求决定是否保留)
  handleRouteChange(route, null)

  // 注册全局路由后置钩子,监听所有路由切换
  app.router.afterEach(handleRouteChange)
}

方案二:使用Vue实例监听$route

通过Vue的$watch方法监听应用实例的$route属性,同样可以实现全局监听:

export default ({ app }, inject) => {
  app.$watch('$route', (to, from) => {
    console.log('路由切换到:', to)
    console.log('路由从:', from)
    // 在这里添加你的Cookie追踪代码
  }, { 
    immediate: true // 配置immediate为true,初始化时立即执行一次监听逻辑
  })
}

两种方案都能实现全局监听路由变化的需求,无需逐个修改布局,任选其一即可。

内容的提问来源于stack exchange,提问作者Ryan H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:30:51