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即可

相关推荐
深念Y2 小时前
微服务抽取路线图:从胖单体到 ARM 集群
前端·arm开发·数据库·后端·微服务·云原生·架构
阮小贰3 小时前
干支编码的确定性实现:节气切分 + 1000 条溯源断语(附 JS 源码)
开发语言·javascript·ecmascript
雪芽蓝域zzs3 小时前
Vue3 + Vite本地模拟数据(读取 JSON 数据)
前端
亿元程序员3 小时前
还有高手?用Shader让图片中的3D圆环转起来!
前端
灯澜忆梦3 小时前
【基于GO的Web开发14】gin请求重定向
前端·后端·golang·gin
qq_452396233 小时前
第十一篇:《前端性能优化体系:从加载到交互的全链路》
前端·性能优化·交互
Mh3 小时前
听说我兄弟喜欢跑车,所以必须安排上
前端·javascript·vue.js
zttbee3 小时前
vue学习(白话功能版)
前端·vue.js·学习·前端框架
qq_426003963 小时前
多语言新增语种全量测试策略
前端·javascript·python·pycharm·自动化
黄敬峰3 小时前
从零搭建 Next.js 单词管理系统:Supabase + Drizzle ORM + shadcn/ui 全栈实战
javascript·面试