如何在 vue 3 组合 API 中定义指令?

How to define directives on vue3 compositionAPI?

如何使用 SFC <script setup> 格式的新语法糖在 vue3 组合 api 上定义和使用指令? 使用 选项 API 以前是这样的

import click_outside from "@/directives/click-outside.js";
export default {
  directives: {
    "click-outside": click_outside,
  }, 
  ...
}

点击-outside.js

<script setup>
import {defineProps, onBeforeMount, onUnmounted, directive } from "vue";

const onBeforeMount = (el, binding) => {
  ...
};
const onUnmounted = (el) => {
 ...
};
</script>

我无法在组合中找出相同的对应代码API

与常规 script SFC 的功能对等是通过 3 种不同的方式实现的。

props 来自 setuppropsemitsexpose 组件选项的参数是通过使用 define... helpers 提供的。 =31=]

context(仅 slotsattrs 属性)来自 setup 的参数是通过使用 use... helpers.

提供的

componentsdirectives 是使用 imports of the same name 间接提供的。

其余功能(例如name 属性)仍然由script element提供,可以与script setup共存。

@Estus Flask 的回答就足够了,但只是为了澄清一下,您只需导入指令,就像使用 PascalCasecamelCase 和你可以直接在你的模板中使用它。

<script setup>
import vClickOutside from "@/directives/click-outside.js";
const outside = () =>{ ... }
...
</script>
<template>
...
<div v-click-outside="outside">
...
...
</template>