Vue2迁移Vue3:在setup中调用Options API的路由方法是否可行?
解答
完全可行,在Vue 2的Composition API(需引入@vue/composition-api包)中,你可以通过getCurrentInstance获取组件实例,进而调用Options API里定义的methods方法。
具体实现代码如下:
import { getCurrentInstance } from '@vue/composition-api' export default { methods: { changeRoute() { this.$router.push({ name: 'home' }) } }, setup() { const instance = getCurrentInstance() // 在Composition API逻辑中调用methods里的方法 const navigateToHome = () => { instance.proxy.changeRoute() } return { navigateToHome } } }
需要注意:
- 必须通过
instance.proxy访问组件的公共方法和属性,它等价于Options API里的this;直接访问instance本身拿到的是内部实例对象,无法直接调用methods中的方法。 - 这种混合写法虽不是最佳实践,但作为迁移过渡阶段的临时方案完全可行,等后续升级到Vue 3和Vue Router 4后,就可以用
useRouter()组合式API直接在setup里操作路由了。
内容的提问来源于stack exchange,提问作者Harrison Cramer
相关产品推荐
相关产品推荐

