vue的生命周期和生命周期钩子函数

官方图示

可以看到钩子函数包含以下几种

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed

分析

image.png
  1. 在beforeCreate和created钩子函数之间的生命周期
    在这个生命周期之间,进行初始化事件,进行数据的观测,可以看到在created的时候数据已经和data属性进行绑定(放在data中的属性当值发生改变的同时,视图也会改变)。
    注意看下:此时还是没有el选项

  2. created钩子函数和beforeMount间的生命周期
    首先会判断对象是否有el选项。如果有的话就继续向下编译,如果没有el选项,则停止编译,也就意味着停止了生命周期,直到在该vue实例上调用vm.$mount(el)。
    这之后,观察到template参数选项对生命周期的影响
    (1)如果vue实例对象中有template参数选项,则将其作为模板编译成render函数。
    (2)如果没有template选项,则将外部HTML作为模板编译。
    (3)template中的模板优先级要高于outer HTML的优先级。
    (4)render函数选项的优先级最高。

  3. beforeMount和mounted 钩子函数间的生命周期
    给vue实例对象添加$el成员,并且替换掉挂在的DOM元素。

  4. mounted
    el已经渲染完成并挂载到实例上

  5. beforeUpdate钩子函数和updated钩子函数间的生命周期
    当vue发现data中的数据发生了改变,会触发对应组件的重新渲染,先后调用beforeUpdate和updated钩子函数。

  6. beforeDestroy和destroyed钩子函数间的生命周期
    beforeDestroy钩子函数在实例销毁之前调用。在这一步,实例仍然完全可用。
    destroyed钩子函数在Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

特殊的钩子函数

vue中可以使用keep-alive来包裹一个动态组件,这样可以保证失活的组件会被缓存,在下次渲染时,可以回到上次结束时的状态,这时拥有两个钩子函数

<keep-alive>
  <component v-bind:is="currentTabComponent"></component>
</keep-alive>
  1. activated
    当keep-alive组件激活时将会调用
  2. deactivated
    当keep-alive组件停用时调用

注意:这两个钩子函数在服务器端渲染期间不被调用

v2.5.0版本新增钩子函数

  • errorCaptured:(err: Error, vm: Component, info: string) => ?boolean

当捕获一个来自子孙组件的错误时被调用。这个猴子函数会收到三个参数错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。

错误传播规则
  • 默认情况下,如果全局的 config.errorHandler 被定义,所有的错误仍会发送它,因此这些错误仍然会向单一的分析服务的地方进行汇报。

  • 如果一个组件的继承或父级从属链路中存在多个 errorCaptured 钩子,则它们将会被相同的错误逐个唤起。

  • 如果此 errorCaptured 钩子自身抛出了一个错误,则这个新错误和原本被捕获的错误都会发送给全局的 config.errorHandler。

  • 一个 errorCaptured 钩子能够返回 false 以阻止错误继续向上传播。本质上是说“这个错误已经被搞定了且应该被忽略”。它会阻止其它任何会被这个错误唤起的 errorCaptured 钩子和全局的 config.errorHandler。

参考资料:
(https://segmentfault.com/a/1190000011381906?utm_source=tag-newest)
(http://www.cnblogs.com/goloving/p/8616989.html)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容