对于组合API,我有与文档watchvue router中的几乎相同的示例.但是console.log永远不会被触发,即使route.params.gameId正确地显示在模板中

<script setup>
import { ref, watch } from 'vue'
import { useRoute } from 'vue-router'
import { useStore } from 'vuex'
const store = useStore()
const route = useRoute()

watch(
      () => route.params.gameId,
      async newId => {
        console.log("watch"+newId)
      }
    )
</script>

<template>
    <div>
        {{route.params.gameId}}
    </div>
</template>

我做错了什么?我也try 使手表函数非同步,但这并没有改变任何事情,稍后我将需要它来获取API,所以它应该是异步的.

推荐答案

你应该给你的手表增加immediate: true个选项:

watch(
      () => route.params.gameId,
      async newId => {
        console.log("watch"+newId)
      },
      { 
          immediate: true

      }
    )

因为监视器不会在第一次呈现时运行,而参数在页面加载时只更改一次,所以监视器会错过该更改.

Vue.js相关问答推荐

设置Vite Vue 3需要多个应用程序输出目录

将 html 文件移出 dist vite 中的 src 文件夹

作为props 传递的原始 ref 的 Vue 3 react 性

当try 更新 Vue 3 中的关联数组中的单个元素时,所有值都会更新

如何在 A-La-Carte 系统中使用 vuetify 加载程序时导入 vuetify/lib

如何使用 vue.js 和 vue 路由实现当前路由的子菜单的子菜单

vuejs:将props传递给javascript中的组件?

Vue.js 开发工具未显示

作用域slots和 IE11 的问题

VueJS:向左,元素的顶部位置?

在没有组件的vue js中拖放

如何在 Vue.js 中使用 MaterializeCss?

如何将 Nuxt.js 更新到最新版本

vuex: unknown getter: user

Nuxt 应用程序在刷新动态路由时返回 404(Tomcat 服务器)

使用 nuxt,如何将路由名称放在页面标题中?

使计算的 Vue 属性依赖于当前时间?

使用 puppeteer 生成 PDF 而不保存

检测 Vue-Router 导航Guards中的后退按钮

为什么 router.currentRoute.path 没有react?