vue2生命周期有几个(vue各个生命周期的作用)

vue2生命周期有几个(vue各个生命周期的作用)生命周期 Life Cycle 是指一个组件从创建 gt 运行 gt 销毁的整个阶段 强调的是一个时间段 由 vue 框架提供的内置函数 会伴随着组件的生命周期 自动按次序执行 生命周期强调的是时间段 生命周期函数强调的是时间点 生命周期函数的分类 组件创建阶段 new Vue 创建组建的实例对象 init Events amp LifeCycle 初始化事件和生命周期函数 gt beforeCreate





生命周期(Life Cycle)是指一个组件从创建 ->运行 ->销毁的整个阶段,强调的是一个时间段

由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行

生命周期强调的是时间段,生命周期函数强调的是时间点

生命周期函数的分类


组件创建阶段

new Vue() 创建组建的实例对象

init Events & LifeCycle 初始化事件和生命周期函数

–> beforeCreate() 组件的props/data/methods尚未被创建,都处于不可用状态

init injections & reactivity 初始化props、data、methods

–> created() 组件的props/data/methods已被创建,都处于可用状态,但组件的模板结构未生成
此时为最早可以使用属性方法的阶段,此阶段常用于发送ajax请求获取数据,或用于绑定自定义事件交换数据

Has "el"option? or when vm.$mount(el) is called 是否有挂载元素el

Has “template” option? 基于数据和模板,在内存中编译生成HTML结构

有模板属性时渲染模板属性 Compile template into render function *
没有模板属性时渲染挂载元素el Compile el’s outerHTML as template *

–> beforeMount() 将要把内存中编译好的HTML结构渲染到浏览器,此时浏览器还没有当前组件的DOM

Create vm.$el and replace “el” with it 把内存中编译生成的HTML结构替换掉el属性指定的DOM元素

–> mounted() 已经把内存中的HTML结构渲染到浏览器,此时浏览器已经包含当前组件的DOM结构
此时为最早可以操作组件DOM元素的阶段


组件运行阶段

when data changes 当数据发生改变时

–> beforeUpdate() 将要根据变化之后的最新的数据,重新渲染组件中的模板结构

Virtual DOM re-render and patch 根据最新的数据,重新渲染组件的DOM结构

–> updated() 已经根据最新的数据,完成了组件的DOM结构的重新渲染
能够操作最新的DOM元素


组件销毁阶段

when vm.$destory() is called 调用组件的销毁函数

–> beforeDestory() 将要销毁此组件,此时尚未销毁,还处于工作的状态

Teardown watchers,child components and event listeners 销毁当前组件的数据侦听器、子组件、事件监听

–> destoryed() 组件已经被销毁,此组件在浏览器中对应的DOM结构已被完全移除


keep-alive 缓存特殊的两个阶段

–> activated 组件激活时

被 keep-alive 缓存的组件激活时调用。初始化操作放在actived里面,该钩子在服务器端渲染期间不被调用。

–> deactivated组件停用时

被 keep-alive 缓存的组件停用时调用。在里面可以进行一些善后操作,该钩子在服务器端渲染期间不被调用。

添加keep-alive标签后会增加activated和deactivated这两个生命周期函数

初始化操作放在actived里面,一旦切换组件

因为组件没有被销毁,所以它不会执行销毁阶段的钩子函数,所以移除操作需要放在deactived里面

在里面进行一些善后操作,这个时候created钩子函数只会执行一次,销毁的钩子函数一直没有执行。




错误处理

当捕获一个来自子孙组件的错误时被调用。

此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。

此钩子可以返回 false 以阻止该错误继续向上传播

错误传播规则

默认情况下,如果全局的 config.errorHandler定义,所有的错误仍会发送它

因此这些错误仍然会向单一的分析服务的地方进行汇报

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

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

不能捕获异步promise内部抛出的错误和自身的错误

一个 errorCaptured 钩子能够返回 false 以阻止错误继续向上传播

本质上是说“这个错误已经被搞定了且应该被忽略”

它会阻止其它任何会被这个错误唤起的 errorCaptured 钩子和全局的 config.errorHandler

错误捕获

组件遇到错误时通过Vue.config.errorHander进行捕获

 

–> errorCaptured 类似错误边界处理


                    
编程小号
上一篇 2025-03-27 08:30
下一篇 2025-03-20 22:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/48761.html