Vue3组合式API调用useRouter、useRoute全部返回undefined问题求助
问题原因按出现概率从高到低排序:
- 未正确注册Vue Router插件
这是最常见的原因,你需要检查项目入口文件(一般为main.js/main.ts),是否将创建好的路由实例通过app.use(router)注册到Vue根实例上,只有完成注册后,useRouter、useRoute才能正常获取到注入的路由实例,正确示例代码:
import { createApp } from 'vue' import App from './App.vue' import router from './router' // 你的路由实例所在文件 const app = createApp(App) app.use(router) // 该步骤不可省略 app.mount('#app')
- 版本不兼容
useRouter和useRoute是Vue Router 4.x版本专属的组合式API,仅支持Vue 3.x版本。如果你当前项目使用的是Vue 2.x + Vue Router 3.x的技术栈,原生不支持这两个API,调用会返回undefined。如果需要在Vue2环境中使用,需要额外安装@vue/composition-api插件,搭配适配版本的Vue Router使用。 - 调用位置不满足要求
这两个API只能在Vue组件的setup()同步执行上下文、或者组合式API的同步执行栈内调用。如果是在异步回调、普通非组件函数、路由守卫等非setup上下文中异步调用,也会返回undefined。 - 路由实例导出异常
检查你定义路由的文件,是否正确将createRouter创建出的路由实例默认导出,如果导出错误、或者入口文件导入的路由实例不是你创建的有效实例,也会导致相关API返回异常。
内容的提问来源于stack exchange,提问作者keizah7
相关产品推荐
相关产品推荐

