VUE的每个生命周期做了什么?

79 阅读1分钟

生命周期基础:

image.png

beforeCreate

  • 创建一个空白的vue实例
  • data method尚未被初始化,不可使用

created

  • vue 实例初始化完成,完成响应式绑定
  • data method都已经初始化完成,可调用
  • 尚未开始渲染模板

beforeMount

  • 编译模板,调用render生成vdom
  • 但是还没有开始渲染DOM

mounted

  • 完成DOM渲染
  • 组件创建完成
  • 开始由创建阶段 进入 运行阶段

beforeUpdate

  • data发生变化后
  • 准备更新DOM(尚未更新DOM)

updated

  • data发生变化,且DOM更新完成
  • (不要在updated中修改data,可能会导致死循环)

beforeUDestroy

  • 组件进入销毁阶段(尚未销毁,可正常使用)
  • 可移除、解绑一些全局事件、自定义事件

destoryed

  • 组件被销毁了
  • 所有子组件也都会被销毁了

keep-alive组件(只创建一次被缓存,后续全是激活和非激活,不是销毁和重建)

  • onActivated 缓存组件被激活
  • onDeavtivated 缓存组件被隐藏

划重点

  • vue生命周期必须掌握

vue什么时候操作DOM比较合适

  • mounted和updated都不能保证子组件全部挂载完成
  • 使用$nextTick渲染DOM

$nextTick

image.png

Ajax应该在哪个生命周期?

  • 有两个选择:created和mounted
  • 推荐mounted

Vue3 composition API生命周期有何区别?

  • 用setup代替了beforeCreate 和created
  • 使用Hooks 函数的形式,如mounted改为onMounted()

image.png