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

Nuxt.js中组件监听路由参数变化的对应实现语法是什么?

Nuxt 底层基于 Vue Router 实现,你在 Vue 中使用的路由参数监听写法在 Nuxt 中完全可以直接复用,针对不同 Nuxt 版本和 API 风格,也可以参考以下对应实现:

Nuxt 2 实现

选项式API

和原生 Vue 写法完全一致,无需修改直接可用:

export default {
  watch: {
    "$route.params.index": function (val) {
      console.log(val)
    },
    // 监听查询参数同理
    // "$route.query.xxx": function(val) { console.log(val) }
  }
}

组合式API

需要先安装@nuxtjs/composition-api插件,写法如下:

import { useRoute, watch } from '@nuxtjs/composition-api'

export default {
  setup() {
    const route = useRoute()
    watch(
      () => route.value.params.index,
      (newVal) => {
        console.log(newVal)
      }
    )
  }
}
Nuxt 3 实现

选项式API

和原生 Vue、Nuxt2 选项式写法完全通用,直接复用原有代码即可。

组合式API(官方默认推荐)

<script setup>
const route = useRoute()

// 监听单个params参数
watch(() => route.params.index, (newVal) => {
  console.log(newVal)
})

// 监听整个params对象需开启深度监听
watch(
  () => route.params,
  (newParams) => {
    console.log(newParams.index)
  },
  { deep: true }
)

// 监听查询参数写法同理
// watch(() => route.query.xxx, (newVal) => console.log(newVal))
</script>

如果是配合useFetch/useAsyncData请求数据,想要路由参数变化时自动重新发起请求,可以直接配置watch选项:

const { data } = useFetch('/api/你的接口地址', {
  watch: [() => route.params.index]
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:07