首先,我们了解一下"生命周期"这个词。通俗的来说,生命周期就是一个事务从出生到消失的过程。例如,一个人从出生到去世。在vue中,vue的生命周期是指,从创建vue对象到销毁vue对象的过程。
Vue第一次页面加载会触发beforeCreate created beforeMount mounted四个钩子函数,DOM渲染在mounted这个周期就已经完成
生命周期图示:
vue2
的双向数据绑定是利用ES5
的一个APIObject.definePropert()
对数据进行劫持,结合发布订阅模式的方式来实现的。
vue3
中使用了ES6
的Proxy
API对数据代理。
相比vue2.x
,使用proxy
的优势如下:
defineProperty
只能监听某个属性,不能对全对象监听for in
,闭包等内容来提升效率(直接绑定整个对象即可)vue3.x
可以检测到数组内部数据的变化。在vue2
中定义数据变量是data(){}
,创建的方法要在methods:{}
中。
而在vue3
中直接在setup(){}
中,在这里面定义的变量和方法因为最终要在模板中使用,所以最后都得 return
。
如:
vue2
中的生命周期
beforeCreate
组件创建之前created
组件创建之后beforeMount
组价挂载到页面之前执行mounted
组件挂载到页面之后执行beforeUpdate
组件更新之前updated
组件更新之后vue3
中的生命周期
setup
开始创建组件
onBeforeMount
组价挂载到页面之前执行
onMounted
组件挂载到页面之后执行
onBeforeUpdate
组件更新之前
onUpdated
组件更新之后
而且Vue3.x
生命周期在调用前需要先进行引入。
如:
import {
reactive,
toRefs,
onMounted,
onBeforeMount,
onBeforeUpdate,
onUpdated,
} from "vue";
Vue2--------------vue3
beforeCreate -> setup()
created -> setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
activated -> onActivated
deactivated -> onDeactivated
errorCaptured -> onErrorCaptured
除了这些钩子函数外,Vue3.x
还增加了onRenderTracked
和onRenderTriggered
函数。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章