Vue的指令有哪些钩子函数、各是什么意思?【专栏14】

前端人

共 1905字,需浏览 4分钟

 ·

2021-06-26 06:51

自定义指令使用场景

  • 存在复杂业务逻辑处理,并且对dom更新相对较少,此时就会用到自定义指令
  • 简化组件内部代码,此时就会用到自定义指令
  • 当需要对普通 DOM 元素进行底层操作,此时就会用到自定义指令
  • 需要减少代码改动,且存在多个相同业务逻辑的,此时就会用到自定义指令

自定义指令使用实例

const auths=["order","users","activity"];
const isAuth=(current)=>{
    const roles=localStorage.getItem("auths");
    const isR=current.some(item => auths.includes(item));
    return isR;
}

Vue.directive('auths', {
  //01
  bindfunction (el, binding, vnode{
  },
  //02
  insertedfunction (el, binding{
    const current  = binding.value
      if(!current||!isAuth(current)){
        el.parentNode && el.parentNode.removeChild(el);
      }
  },
  //03
  updatefunction (el, binding, vnode,oldVnode{
  },
  //04
  componentUpdatedfunction (el, binding, vnode,oldVnode{
  },
  //05
  unbindfunction ({
  },
})
<template>
  <a v-auths="['order']">编辑订单</a>
</template>

触发顺序

如auths自定义指令中定义的顺序

自定义指令钩子函数

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
  • inserted: 被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。
  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。
  • unbind: 只调用一次,指令与元素解绑时调用。

参考资料

  • https://cn.vuejs.org/v2/guide/custom-directive.html

说明

本专栏总共汇总了150道题,每道题目答案没有多余扯皮的部分,就是单纯的答案。

关注公众号,每天一到面试题,为下次跳槽准备,人人都能冲击30k+,点击关注【鬼哥

当前进度【#014题】,如果你能点赞分享、鬼哥骑自行车也是开心的

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报