在 vue 3 中调用组件本身的插件 app.use

Call app.use for plugin in the component itself in vue 3

我正在构建一个使用 v-tooltip 插件的组件库。所以我需要在组件本身中安装和使用插件,而不是通过 app.use() 在全局范围内使用它。 我已经阅读了很多帖子,但到目前为止我所尝试的方法对我的情况不起作用。

我知道我可以在 Composition API 中访问该应用程序:

import VTooltip from 'v-tooltip';
import 'v-tooltip/dist/v-tooltip.css';

const App = getCurrentInstance().appContext.app;
App.use(VTooltip);

但这不起作用,我收到此警告: [Vue warn]: Component is missing template or render function.

如有任何帮助,我们将不胜感激。

要在组件本身中使用此插件,您可以尝试这样做:

<template>
  <button v-tooltip="/* your code */"> Custom button </button>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import VTooltip from "v-tooltip";

export default defineComponent({
  directives: {
    tooltip: VTooltip.VTooltip,
    "close-popover": VTooltip.VClosePopover,
    "v-popover": VTooltip.VPopover,
  },
});
</script>

谢谢@Rago,你给了我指令的想法。在这种情况下,解决方案非常简单......目前 v-tooltip 正在进行包重命名(至 floating-vue),因此使用新插件,您可以决定是要使用组件还是指令。

这是解决方案:

<template>
...
<span v-tooltip="help" class="form-help">?</span>
...
</template>

<script>
import 'floating-vue/dist/style.css';
import { VTooltip } from 'floating-vue';

export default defineComponent({
  directives: {
    tooltip: VTooltip,
  },
  ...
});
</script>

而对于 Composition API,您只需导入它,如果您遵循命名约定,Vue 将自动检测指令 - 将 v 放在指令前面:

import 'floating-vue/dist/style.css';
import { VTooltip } from 'floating-vue';

const vTooltip = VTooltip;