vue生命周期钩子函数总结以及在项目中的应用实例讲解
哈喽,大家好啊
今天学习总结下vue.js的生命周期钩子函数
官网地址:https://cn.vuejs.org/guide/essentials/lifecycle.html
vue组件实例创建都要经历初始化流程,
-
数据监听
-
编译模板
-
挂载实例到DOM
-
数据改变更新到DOM
举例:mounted钩子用来组件完成初始化渲染并创建DOM节点后
所有的生命周期钩子函数this上下文都会自动指向调用他的组件实例,
注:避免用箭头函数来定义生命周期钩子,因为如果这样的话就无法在函数中通过this获取组件实例
接下来就是各个生命周期函数了
-
beforeCreate 在组件实例初始化完成之后立即调用
-
会在实例初始化完成,props解析之后,data()和computed等选项处理之前立即调用
-
created 是在组件实例处理完所有与状态相关的选项后调用
-
在created钩子函数被调用时,以下内容已经设置完成:响应式数据,计算属性,方法和侦听器
-
然而,此时挂载阶段还没有开始,所以$el属性不可以用
-
beforeMount 在组件被挂载之前调用
-
当这个钩子函数被调用时,组件已经完成了其响应式状态的设置,但是还没有创建DOM节点。
-
他即将首次执行DOM渲染过程
-
这个钩子函数在服务器渲染的时候不会被调用
-
mounted 在组件被挂载之后调用
-
详情信息:
-
组件在以下情况下被视为已经挂载
-
1.所有的同步子组件都已经被挂载(不包含异步组件或者<Suspense>树内的组件)
-
2.其自身的DOM树已经创建完成并插入了父容器中。注意仅当根容器在文档中,才可以保证组件DOM树也在文档中。
-
这个钩子通常用于执行需要访问组件所渲染的 DOM 树相关的副作用,或是在服务端渲染应用中用于确保 DOM 相关代码仅在客户端被调用。(这句我没有理解懂,后面根据自己的知识点深入补充例子)
-
这个钩子函数在服务器端渲染时不会被调用
-
beforeUpdate 在组件即将因为一个响应状态变更而更新其DOM树之前调用
-
这个钩子函数可以用来Vue更新DOM之前访问DOM状态,也可以在这个钩子函数中更改状态
-
这个钩子函数在服务器端时不会被调用
-
updated 在组件因为一个响应式状态变更其DOM树之后调用
-
详细信息
-
父组件的更新钩子将在其子组件的更新钩子之后调用
-
这个钩子会在组件的任意DOM更新之后被调用,更新可能会是不同的状态变更导致的
-
如果你需要在某个特定的状态访问更新后的DOM,可以用nextTick()
-
这个钩子在服务端渲染时不会被调用
-
注意不要在updated钩子中更改组件的状态,可能会导致无限的更新循环
-
beforeUnmount 在一个组件实例被卸载之前调用
-
详细信息:
-
当这个钩子函数被调用的时候,组件实例还保留有全部的功能
-
这个钩子函数在服务器端渲染时候不会被调用
-
unmounted 在一个组件实例被卸载之后调用
-
详细信息:
-
一个组件在下面情况中会被视为已卸载
-
1.所有的子组件都已经被卸载
-
2.所有相关的响应式作用(渲染作用以及setup()时创建的计算属性和侦听器)都已经停止
-
用来清理定时器,DOM事件监听器或者与服务器的链接
-
这个钩子函数在服务端渲染时不会被调用
-
errorCaptured
-
在捕获了后代组件传递的错误时调用
-
错误可以从以下几个来源中捕获
-
1.组件渲染
-
2.事件处理器
-
3.生命周期钩子
-
4.setup()函数
-
5.侦听器
-
6.自定义指令钩子
-
7.过渡钩子
-
这个钩子带有3个实参:错误对象,触发该错误的组件实例,以及一个说明错误来源类型的信息字符串
-
可以在该钩子函数中更改组件状态来为用户显示一个错误状态,注意:不要让错误状态渲染为导致本次错误的内容,否则组件会进入无限的渲染循环中
-
该钩子函数可以通过返回false来组织错误继续向上传递
错误传递规则
-
默认情况下,所有的错误都会被发送到应用级的 app.config.errorHandler (前提是这个函数已经定义),这样这些错误都能在一个统一的地方报告给分析服务。
-
如果组件的继承链或组件链上存在多个 errorCaptured 钩子,对于同一个错误,这些钩子会被按从底至上的顺序一一调用。这个过程被称为“向上传递”,类似于原生 DOM 事件的冒泡机制。
-
如果 errorCaptured 钩子本身抛出了一个错误,那么这个错误和原来捕获到的错误都将被发送到 app.config.errorHandler。
-
errorCaptured 钩子可以通过返回 false 来阻止错误继续向上传递。即表示“这个错误已经被处理了,应当被忽略”,它将阻止其他的 errorCaptured 钩子或 app.config.errorHandler 因这个错误而被调用。
-
renderTracked
-
在一个响应式依赖被组件的渲染作用追踪后调用
-
这个钩子函数仅在开发模式下可以使用,且在服务器渲染期间不会被调用
-
renderTriggered 在一个响应式依赖被组件触发了重新渲染之后调用
-
这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用
-
activated 若组件实例是<keepAlive>缓存树的一部分,当组件被插入到DOM中时调用
-
这个钩子在服务器端渲染时不会被调用
-
deactivated
-
若组件实例是<KeepAlive>缓存树的一部分,当组件从DOM中被移除时调用
-
这个钩子在服务器端渲染时不会被调用
-
serverpRrefetch
-
当组件实例在服务器上被渲染之前要完成的异步函数
-
如果这个钩子函数返回一个Promise,服务端渲染会在渲染该组件前等待该promise完成
-
这个钩子函数仅会在服务端渲染中执行,可以用于执行一些仅在服务端才有的数据抓取过程
还有关于路由导航守卫的
beforeRouteEnter 和beforeRouteLeave:
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)