如何在 Vue3 Composition API 上使用 Vue2 插件?

Posted

技术标签:

【中文标题】如何在 Vue3 Composition API 上使用 Vue2 插件?【英文标题】:How to use Vue2 plugins on Vue3 Composition API? 【发布时间】:2021-03-16 13:59:13 【问题描述】:

我正在迁移我的 Vue2 应用程序以使用 @vue/composition-api(Vue 版本仍然是 2 而不是 3)。

在 Vue2 中,我使用像 this.$session 这样的插件,但是 this 在 Vue3 上不起作用。我找到的解决方案是这样使用:

setup (props, context) 
  context.root.$session // works fine
  context.root.$anotherPlugin 

但是在 Vue3 中,context.root@deprecated,所以当我迁移到 Vue3 时,它将不再工作。

还有其他方法可以访问setup() 中的 Vue 实例吗?我想如果我可以访问它,我可以在 Vue3 上正常使用这些插件。

【问题讨论】:

一种方法是从“vue”导入 Vue,然后使用 Vue.session(不带美元符号)。 【参考方案1】:

使用provide & inject

提供

const app = createApp(App);
app.provide('someVarName', someVar);  // Providing to all components here

注入

const  inject  = Vue;
...
setup() 
  const someVar = inject('someVarName');   // injecting in a component that wants it

【讨论】:

以上是关于如何在 Vue3 Composition API 上使用 Vue2 插件?的主要内容,如果未能解决你的问题,请参考以下文章

vue2升级vue3: TSX Vue 3 Composition API Refs

如何让 Vue3 Composition API 代码看起来更函数式?

使用 nuxt-composition-api 在路由更改上重新初始化 Vue3 可组合函数

让Vue3 Composition API 存在于你 Vue 以外的项目中

Vue3 Composition API——computedwatchEffectsetup中使用ref

vue3的composition-api实践总结