一、 为什么你的Vue代码总在“重复造轮子”?
想象一下这个场景:产品经理又双叒提需求了——“小王啊,咱们这个表单的输入框,每次点开都要自动聚焦!还有那个滚动到底部加载的功能,用户说不够灵敏!哦对了,权限按钮要根据用户角色动态显示……”
你一边赔笑说“好的好的”,一边内心OS:“又是DOM操作!Vue不是数据驱动吗?怎么老让我手动写document.getElementById()?!”
别慌!Vue自定义指令的钩子函数,就是专门用来解决这种“DOM牛皮癣”的终极方案!它就像给你的组件安装了读心术——能预知元素何时被创建、插入页面、更新甚至销毁!今天,就让我们用打游戏闯关的姿势,彻底征服这五个钩子函数!
二、 钩子函数入门:把DOM生命周期变成“游戏地图”
如果把一个Vue组件的生命周期比作“出生→长大→工作→退休”,那么自定义指令的钩子函数就是安插在DOM元素上的微型监控摄像头!来看这张“游戏地图”:
- bind关卡:元素刚“出生”(绑定到DOM),但还没上户口(插入页面)
- inserted关卡:元素成功“落户”(插入父节点),可以出门社交了(能访问父节点)
- update关卡:元素“换装”(数据更新),但可能只是虚晃一枪(值可能不变)
- componentUpdated关卡:元素和子组件全部“换装完毕”,确保颜值同步
- unbind关卡:元素“退休”(解除绑定),记得打扫房间(移除事件监听)
是不是瞬间好理解了?接下来我们逐个击破!
三、 深度解剖五大钩子函数(附代码实战)
1. bind——元素的“胎儿期”
触发时机:指令第一次绑定到元素时(类似created生命周期)
能力限制:此时元素还没插入页面,所以无法获取父节点信息(parentNode为null)
经典场景:初始化样式、绑定事件(但注意!无法获取元素位置)
// 示例:给按钮绑定权限验证逻辑
Vue.directive('permission', {
bind(el, binding) {
const userRole = ['admin', 'editor'];
const requiredRole = binding.value; // 比如 v-permission="'admin'"
if (!userRole.includes(requiredRole)) {
el.style.display = 'none'; // 直接隐藏元素
// 但不能

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



