细说vue钩子函数(生命周期函数)

一、概述

  • 钩子函数用来描述一个组件从引入到退出的全过程中的某个过程,整个过程称为生命周期。
  • 钩子函数按照组件生命周期的过程分为:挂载阶段=>更新阶段=>销毁阶段。

二、每个阶段对应的钩子函数

  • 挂载阶段:beforeCreate、created、beforeMounted、mounted
  • 更新阶段:beforeUpdate、updated
  • 销毁阶段:beforeDestroy、destroyed
  • keep-alive 独有的:activated 、deactivated。

三、各个钩子函数的使用特点

  • beforeCreate: 这个阶段主要是完成vue中关于生成周期以及事件的一些初始化工作。这时候,data和methods中的数据都没初始化
  • created: 实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到el属性,el属性,ref属性内容为空数组常用于简单的ajax请求,页面的初始化
  • beforeMount: 在挂载开始之前被调用,beforeMount之前,会找到对应的template,并编译成render函数
  • mounted: 实例挂载到DOM上,此时可以通过DOM API获取到DOM节点,$ref属性可以访问常用于获取VNode信息和操作,ajax请求
  • beforeupdate: 响应式数据更新时调用,发生在虚拟DOM打补丁之前,适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器
  • updated: 虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,可执行依赖于DOM的操作避免在这个钩子函数中操作数据,可能陷入死循环
  • beforeDestroy: 实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例,常用于销毁定时器、解绑全局事件、销毁插件对象等操作
  • destroyed: 销毁,实例上的data和所有methods,以及过滤器、指令都处于不可用状态,还未真正销毁
  • activated: 被 keep-alive 缓存的组件激活时调用。初始化操作放在actived里面
  • deactivated: 被 keep-alive 缓存的组件停用时调用。在deactived里面,在里面进行一些善后操作

四、父子组件钩子函数在三个阶段的代码执行顺序

  • 挂载: 父亲created> 子created > 子mounted> 父亲mounted>
  • 更新: 父亲beforeUpdate > 子beforeUpdated > 子updated > 父亲updated
  • 销毁: 父亲beforeDestroy> 子beforeDestroy > 子destroyed> 父destroyed

五、Vue生命周期流程图请添加图片描述

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue钩子函数是在Vue实例生命周期中的特定时间点执行的回调函数Vue生命周期可以分为创建、挂载、更新和销毁四个阶段。 1. 创建阶段:在这个阶段,Vue实例被创建,数据进行初始化,编译模板,并开始挂载DOM。 2. 挂载阶段:在这个阶段,Vue将数据渲染到DOM上,即将data中的数据绑定到el上。 3. 更新阶段:在这个阶段,Vue会监听data变化并更新DOM。 4. 销毁阶段:在这个阶段,Vue解除data与el的绑定关系,销毁Vue实例。 Vue生命周期钩子函数在每个阶段执行不同的任务。例如,created钩子在创建阶段执行,可以用于初始化数据或进行异步操作;mounted钩子在挂载阶段执行,可以用于获取数据或操作DOM;destroyed钩子在销毁阶段执行,可以用于清理定时器或解除事件绑定等操作。 父子组件的执行顺序是先父后子。父组件会在自身的生命周期钩子函数执行完毕后,再执行子组件的生命周期钩子函数。 当执行销毁操作后,Vue不再对data的变化进行响应,但是原先生成的DOM元素仍然存在。可以理解为执行了destroy操作后,Vue不再控制该元素。 综上所述,Vue钩子函数生命周期是为了在特定的阶段执行相应的回调函数,用于控制Vue实例的初始化、更新和销毁过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vue生命周期和钩子函数详解](https://blog.csdn.net/qq_42696432/article/details/120925949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Vue生命周期及其钩子函数](https://blog.csdn.net/ORANGEFISHs/article/details/125378442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值