五:Vue的生命周期理解,不能仅仅停留在生命周期函数。

108 阅读4分钟

还记得刚入职的时候,非常不会描述问题,总是会说在XX之前,在XX之后,现在想来,是对生命周期的概念非常模糊。
PC端移动端,从vuereact,熟悉一个新知识前,生命周期总是无法避免的,给学习提供了一个很好的入口。

对于Vue来说,Vue2生命周期钩子函数的总结:

  1. beforeCreate: 在实例创建之前调用,此时还没有调用 data 选项中定义的数据和 methods 方法。
  2. created: 实例创建完毕后调用,此时已经完成了以下操作:
    • 实例化了一个 new Vue() 对象;
    • 通过 options 对象中的 data 属性初始化了数据;
    • 通过 options 对象中的 methods 属性初始化了一些方法;
    • 执行了 beforeMount 钩子函数。
  3. beforeMount: 在挂载开始之前调用,相关的 render 函数首次被调用。可以在此时对实例进行渲染。
  4. mounted: 实例已经挂载到 DOM 上后调用,此时所有的模板都被渲染为真实的 DOM,可以在此时执行与 DOM 相关的操作。
  5. beforeUpdate: 数据更新后但在 DOM 重新渲染和更新之前调用,可以在此时执行一些准备工作,比如异步请求数据等。 6.updated: 在 DOM 重新渲染和更新后调用,此时所有的变动都已经反映到了 DOM 上,可以在此时执行一些收尾工作。
  6. beforeDestroy: 在实例销毁之前调用,可以在此时执行一些清理工作,比如取消计时器、移除事件监听器等。
  7. destroyed: 实例已经销毁后调用,所有的事件监听器和子组件都被移除,可以在此时执行一些善后工作。

对于Vue3,

  1. beforeCreate 和 created: 在此阶段,组件实例刚被创建,模板编译和渲染的过程还未开始。
  2. beforeMount 和 mounted: 在此阶段,模板编译已经完成,组件被挂载到DOM上,但是还没有进行首次渲染。
  3. beforeUpdate 和 updated: 在此阶段,组件已经接收到新的数据并开始更新DOM,但还未完成更新。
  4. beforeUnmount 和 unmounted: 在此阶段,组件从DOM中卸载,但还未完全卸载。
  5. onActivated 和 onDeactivated: 这两个钩子函数仅在组件被包含在中时才可用。当组件被激活时,onActivated被调用;当组件被取消激活时,onDeactivated被调用。
  6. onErrorCaptured: 这个钩子函数在捕获阶段处理组件渲染过程中发生的任何错误。

对于react,个人认为不如vue2那么清楚,以16.3版本为界,分为新旧两个部分 ,

旧版生命周期函数:
1. componentWillMount:在组件即将被挂载到页面的时刻执行,只执行一次。
2. componentDidMount:在组件被挂载到页面之后执行,只执行一次。
3. componentWillReceiveProps:在组件接收到新的props之前执行。
4. ** shouldComponentUpdate**:在组件接收到新的props或者state之后,判断是否需要重新渲染组件,默认返回true。
5. componentWillUpdate:在组件即将被更新之前执行。
6. componentDidUpdate:在组件被更新之后执行。
7. componentWillUnmount:在组件被卸载之前执行。

新版生命周期函数:
1. getDerivedStateFromProps:在组件接收到新的props之后,返回一个新的state值。 2. getSnapshotBeforeUpdate:在组件即将被更新之前执行,可以在此方法中获取更新前的DOM状态。
3. componentDidMount:在组件被挂载到页面之后执行,只执行一次。
4. shouldComponentUpdate:在组件接收到新的props或者state之后,判断是否需要重新渲染组件,默认返回true。
5. componentDidUpdate:在组件被更新之后执行。
6. componentWillUnmount:在组件被卸载之前执行。

对于uniapp,

  1. onLaunch:应用程序初始化时调用,全局只触发一次。
  2. onShow:应用程序启动或从后台进入前台时调用。
  3. onHide:应用程序从前台进入后台时调用。
  4. onError:应用程序发生错误时调用。
  5. onPageNotFound:页面不存在时调用。

对于微信小程序, 又会分为组件的生命周期和页面的生命周期,这就非常有意思

对于组件:

  1. created: 在组件实例刚刚被创建时执行
  2. attached: 在组件实例进入页面节点树时执行
  3. ready: 在组件在视图层布局完成后执行
    4.** moved:** 在组件实例被移动到节点树另一个位置时执行
  4. detached: 在组件实例被从页面节点树移除时执行
  5. error: 每当组件方法抛出错误时执行

对于页面:

  1. onLoad:页面加载时调用。
  2. onShow:页面显示时调用。
  3. onReady:页面初次渲染完成时调用。
  4. onHide:页面隐藏时调用。
  5. onUnload:页面卸载时调用。