vue3的自定义指令(v-has)

vue3的自定义指令

借鉴:https://blog.csdn.net/weixin_42349568/article/details/125060231.

1.vue3和vue2的写法变化

官网中是这样介绍的:https://v3.cn.vuejs.org/guide/migration/custom-directives.html#_2-x-%E8%AF%AD%E6%B3%95
在 Vue 3 中,我们为自定义指令创建了一个更具凝聚力的 API。正如你所看到的,它们与我们的组件生命周期方法有很大的不同,即使钩子的目标事件十分相似。我们现在把它们统一起来了:

created - 新增!在元素的 attribute 或事件监听器被应用之前调用。
bind → beforeMount
inserted → mounted
beforeUpdate:新增!在元素本身被更新之前调用,与组件的生命周期钩子十分相似。
update → 移除!该钩子与 updated 有太多相似之处,因此它是多余的。请改用 updated。
componentUpdated → updated
beforeUnmount:新增!与组件的生命周期钩子类似,它将在元素被卸载之前调用。
unbind -> unmounted

2.v-has写法

2-1.在utils工具下创建文件 hasPermission.ts

export const hasPermission = {
  install(Vue: any, options: any) {
    //自定义指令v-has:
    Vue.directive('has', {
      mounted(el: any, binding: any) {
        if (!checkPermission(binding.value)) {
          el.parentNode.removeChild(el);
        }
      },
    });
    //权限检查方法
    function checkPermission(value: any) {
      let isExist = false;

      let buttonArr = JSON.parse(localStorage.getItem("permissionButton") || "[]");

      //判断是否按钮有权限
      if (buttonArr.includes(value)) {
        isExist = true;
      }
      return isExist;

    };
  }
};
export default hasPermission;

2-1.在 main.ts中全局引入方法

import hasPermission from '@/utils/hasPermission';
app.use(hasPermission)
//挂载到页面上
app.mount('#app');
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值