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

Nuxt如何仅对特定路径开启路由监听 避免其他页面触发fetch方法

问题原因

路由切换过程中,wallpaper 组件的销毁时机晚于 $route.query 更新时机。路由从 wallpaper 页切走时,query 会先发生变化触发 watch 回调,此时组件还未销毁,所以 fetch 会被额外执行一次。

解决方案


方案1:在fetch方法内增加路由校验

改造成本最低,直接在fetch逻辑最前面增加路由判断,非wallpaper路由直接终止执行:

watch: {
  "$route.query": "$fetch"
},
async fetch() {
  // 新增路由判断,路由不匹配直接返回,也可以用路由名称判断:if (this.$route.name !== 'wallpaper') return
  if (this.$route.path !== '/wallpaper') return
  console.log("fetched");
  // My Code
},

方案2:修改watch逻辑,仅匹配当前路由时触发

如果不想修改原有fetch逻辑,可以改写watch的回调,触发前先校验路由:

watch: {
  "$route.query": {
    handler() {
      if (this.$route.path === '/wallpaper') {
        this.$fetch()
      }
    },
    deep: true // 若query存在嵌套参数时需要加上,普通场景可省略
  }
},
async fetch() {
  console.log("fetched");
  // My Code
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:15:00