[Vue的面试题]关于指令

文章详细介绍了如何在Vue中自定义指令,包括全局和局部的创建方法,并阐述了自定义指令的四个生命周期钩子函数。同时,对比了Vue2和Vue3中v-if与v-for的执行优先级变化,指出在Vue2中v-for优先,而在Vue3中v-if优先。
摘要由CSDN通过智能技术生成

1. 如何自定义指令

全局自定义指令:

首先我们得在main.js里面编写我们需要自定义的指令,这样全局就都可以使用得到这个指令

我们在组件中使用:

运行结果:

局部自定义指令:

只需要在相应的组件创建自定义指令就好了

运行结果:

tip:值得一提的是,我们经常用的都是全局自定义指令,基本上不用局部,因为创建自定义指令的目的就是为了重复高效的在多个组件中使用

自定义指令——钩子函数:

bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置

inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)

update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新

componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用

unbind:只调用一次,指令与元素解绑时调用

它们都含有三个参数

el:指令所绑定的元素,可以用来直接操作 DOM

binding:一个数据对象

vnode:一个虚拟节点

2. v-if和v-for的优先级

在Vue2中,v-for > v-if

在Vue3中,v-if > v-for

因为在源码中,Vue2中是先判断v-for再判断v-if

而Vue3中,则改变了顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值