1、官方说明:https://cn.vuejs.org/guide/reusability/custom-directives
除了 Vue 内置的一系列指令 (比如
v-model
或v-show
) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。我们已经介绍了两种在 Vue 中重用代码的方式:组件和组合式函数。组件是主要的构建模块,而组合式函数则侧重于有状态的逻辑。另一方面,自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。
2、案例说明:
新建文件vNameOfDirectiveTest.vue
代码:
<script setup>
const vMyDirective = {
beforeMount: (el) => {
// 在元素上做些操作
console.log(el);
el.style.color = 'red'
el.style.backgroundColor = 'yellow'
}
}
</script>
<template>
<h1 v-my-directive>This is a Heading</h1>
<div v-color="'red'">This text will be red.</div>
<input v-focus value="This is a input"></input>
</template>
说明:
vMyDirective:局部指令。
v-color,v-focus:全局指令。
const app = createApp(App);
// 注册自定义指令
const color = {
mounted(el, binding) {
el.style.color = binding.value;
},
// 如果需要在更新时也更新颜色,可以添加一个 `updated` 钩子
// updated(el, binding) {
// el.style.color = binding.value;
// }
};
app.directive("focus", {
mounted(el) {
el.focus();
},
});
// 全局注册自定义指令
app.directive('color', color);
3、注意:
<div v-color="'red'">This text will be red.</div>
这里的v-color="'red'",red一定要有二个单引号引起来,否则不生效,实测生效。