Vue3自定义全局指令批量注册

指令封装代码:

TypeScript 复制代码
import type { App } from "vue";

const content ={
    mounted(el : any, binding : any) {
        console.dir(binding.value);
        el.remove();
    }
};

const operate = {
    mounted(el : any, binding : any) {
        console.dir(binding.value);
        el.remove();
    }
};

const directives : any = {
    content,
    operate
}

/*
*  指令的完整生命周期
  // 在绑定元素的 attribute 前
  // 或事件监听器应用前调用
  created(el, binding, vnode, prevVnode) {
    // 下面会介绍各个参数的细节
  },
  // 在元素被插入到 DOM 前调用
  beforeMount(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都挂载完成后调用
  mounted(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件更新前调用
  beforeUpdate(el, binding, vnode, prevVnode) {},
  // 在绑定元素的父组件
  // 及他自己的所有子节点都更新后调用
  updated(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载前调用
  beforeUnmount(el, binding, vnode, prevVnode) {},
  // 绑定元素的父组件卸载后调用
  unmounted(el, binding, vnode, prevVnode) {}
* */

export function setDirective( app : App<Element>) {
    Object.keys(directives).forEach( (key: string) => {
        app.directive(key, directives[key])
    })
}

全局挂载:

TypeScript 复制代码
import { setDirective } from '@/utils/PowerAuth'
const app = createApp(App);
setDirective(app);

指令使用:

html 复制代码
<template>
  <div>
    <div v-content>需要权限</div>
    <div>无需权限</div>
  </div>
</template>

效果

提示:页面直接在元素上像使用v-if那样v-xxx即可

相关推荐
RainbowSea22 分钟前
NVM 切换 Node 版本工具的超详细安装说明
java·前端
读书点滴27 分钟前
笨方法学python -练习14
java·前端·python
Mintopia34 分钟前
四叉树:二维空间的 “智能分区管理员”
前端·javascript·计算机图形学
慌糖39 分钟前
RabbitMQ:消息队列的轻量级王者
开发语言·javascript·ecmascript
Mintopia1 小时前
Three.js 深度冲突:当像素在 Z 轴上玩起 "挤地铁" 游戏
前端·javascript·three.js
Penk是个码农1 小时前
web前端面试-- MVC、MVP、MVVM 架构模式对比
前端·面试·mvc
markyankee1011 小时前
Vue.js 入门指南:从零开始构建你的第一个应用
vue.js
MrSkye1 小时前
🔥JavaScript 入门必知:代码如何运行、变量提升与 let/const🔥
前端·javascript·面试
白瓷梅子汤1 小时前
跟着官方示例学习 @tanStack-form --- Linked Fields
前端·react.js
爱学习的茄子1 小时前
深入理解JavaScript闭包:从入门到精通的实战指南
前端·javascript·面试