个人理解Vue生命周期

319 阅读1分钟

生命周期示例

Vue的生命周期主要分三个阶段

Clipboard Image (2022-09-21 11.07.55).bmp

Vue3

vue生命周期.jpg

Vue2

vue2.png

Vue2与Vue3生命周期的区别

1.在Vue3中,beforeCreate与created钩子被setup()替换
2.一些钩子函数的重命名

  • beforeMounted -> onBeforeMounted
  • mounted -> onMounted
  • beforeUpdate -> onBeforeupdate
  • updated -> onUpdated
  • beforeDestroy -> onBeforedestroy
  • destroyed -> onDestroyed

父子组件的生命周期

  • 加载渲染阶段:
graph TD
父组件beforeCreate --> 父组件created --> 父组件beforeMount --> 子组件beforeCreate --> 子组件created --> 子组件beforeMount --> 子组件mounted --> 父组件mounted
  • 更新阶段:
graph TD
父组件beforeUpdate --> 子组件beforeUpdate --> 子组件updated --> 父组件updated
  • 销毁阶段
graph TD
父组件beforeDestroy --> 子组件beforeDestroy --> 子组件destroyed --> 父组件destroyed

生命周期的每个阶段适合做什么

  • created
    此时Vue实例创建完毕,可以访问到data,watch,computed,methods上的方法和数据,但此时还未将虚拟DOM挂载到真实DOM上,所以此时访问不到DOM元素
    在这个时候可以进行简单的AJAX操作,并可以对页面进行初始化的操作如获取后台的数据等
  • beforeMount
    在挂载前调用,此时回去找虚拟DOM,并将其编译成Render
    在这个时候时候进行echart,antvg2图表数据的获取
  • Mouted
    此时虚拟DOM已经挂载到真实DOM上,可以获取DOM几点,也可以访问到$ref
    此时可以获取到节点信息,对节点做操作
  • beforeUpdate
    在响应式数据被更新时会调用,此时虚拟DOM还未被更新,可以访问到现有的DOM
    此时仍可以访问到现有的DOM,适合手动移除一些监听事件
  • updated
    此时补丁已经更新,DOM已经更新完毕
    在这个时候不适合进行数据操作
  • beforeDestroy
    在实例销毁之前调用,此时实例仍未被销毁
    此时可以销毁定时器,解绑全局事件,销毁插件对象等