vue指令 directive

一见如故

<div v-xxx:abc.foo.bar="sss"></div>
app.directive('xxx', {
	// 多个生命周期,同组件的生命周期
	mouted(el, binding){}
})
  • 涉及到dom操作,第一时间想到封装成指令
  • 解构binding
    1、value // 指’sss’
    2、oldValue // 一般用于beforeUpdate和updated周期中
    3、arg // 传给指令的参数,‘abc’
    4、modifiers // 打印得{foo: true, bar: true}

setup语法糖中定义指令

// 定义v开头的驼峰式命名的变量,值为一个对象或者函数
const vFocus = {
  mounted: (el) => el.focus()
}

directive的第二个参数可以是一个函数

// 在mouted和updated生命周期中调用,其他生命周期不关注
app.directive('xxx', (el, binding) => {})

指令的值可以传一个对象

<div v-xxx="{a: obj.a,b:obj.b}">

注意及时卸载钩子函数定义的全局变量、定时器、事件等

示例v-debounce

app.directive('debounce',(el, {value}) => {
	let timer
	el.addEventListener('click', () => {
		if(timer) {
			clearTimeout(timer)
		}
		timer = setTimeout(() => {
			value()
		}, 500)
	})
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值