自定义指令及应用场景

  • 【作用是什么】:可以对普通 DOM 进行底层操作,例如聚焦输入框。

  • 【怎么用】:可以通过 Vue.directive 全局注册一个指令,或者组件内部通过 directives 进行局部注册,它常用的钩子有 inserted,表示被绑定元素插入父节点时调用,还有 update,它表示指令所在组件的 VNode 更新时调用。

  • 【场景】:我在实际项目中,用自定义指令处理过图片懒加载,原理就是当图片进入可视区的时候把图片的地址给图片的 src 属性就好啦。

  • 【注意】:自定义指令相关的钩子在 Vue3 中发生了变化,主要体现在和组件的生命周期钩子保持了一致,更加容易记忆和理解了

如何实现

注册一个自定义指令有全局注册与局部注册

在main.js全局注册主要是通过Vue.directive方法进行注册

Vue.directive第一个参数是指令的名字(不需要写上v-前缀),第二个参数可以是对象数据,也可以是一个指令函数

// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus() // 页面加载完成之后自动让输入框获取到焦点的小功能
  },
})

组件使用就是 v-focus

局部注册:

//inserted  已经插入了
 direactives:{
    //局部注册指令:
    focus: {
        inserted(el){
            el.focus
        }
    }
}

使用 就是 v-focus

自定义指令-指令的值

export default {
    directives:{
    color:{
    //参数1:指令绑定的元素对象
    //参数2:指令相关的值
    inserted(el,binding){
    el.style.color=binding.value
},
//当值改变时,触发的事情
    update(el,binding){
    el.style.color=binding.value
}
}

}
,
    data(){
        return{
            color1:'red',
            color2:'orange'
}
}
}

 

<div>
<h1>v-color='color1'>指令的值1</h1>
<h1>v-color='color2'>指令的值2</h1>
</div>

看效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值