vue生命周期钩子函数总结以及在项目中的应用实例讲解

哈喽,大家好啊

今天学习总结下vue.js的生命周期钩子函数

官网地址:https://cn.vuejs.org/guide/essentials/lifecycle.html

生命周期选项 | Vue.js (vuejs.org)

vue组件实例创建都要经历初始化流程,

  1. 数据监听

  1. 编译模板

  1. 挂载实例到DOM

  1. 数据改变更新到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:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值