vue3生命周期函数更改了几个

发布时间:2023-01-16 13:43:24 作者:iii
来源:亿速云 阅读:217

Vue3生命周期函数更改了几个

引言

Vue.js 是一个流行的前端框架,它通过提供一套简洁的 API 和强大的功能,帮助开发者构建高效、可维护的 Web 应用。Vue3 是 Vue.js 的最新版本,它在 Vue2 的基础上进行了大量的优化和改进,其中包括对生命周期函数的调整。本文将详细介绍 Vue3 中生命周期函数的更改,以及这些更改对开发者带来的影响。

Vue2 生命周期回顾

在深入探讨 Vue3 的生命周期函数之前,我们先回顾一下 Vue2 中的生命周期函数。Vue2 的生命周期函数主要包括以下几个阶段:

  1. beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
  2. created:在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
  3. beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
  4. mountedel 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
  5. beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。
  6. updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。
  7. beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
  8. destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

Vue3 生命周期函数的更改

Vue3 在生命周期函数方面进行了一些调整,主要体现在以下几个方面:

1. 生命周期钩子函数的命名变化

Vue3 中,生命周期钩子函数的命名发生了一些变化,主要是为了与 Composition API 保持一致。具体变化如下:

2. setup 函数的引入

Vue3 引入了 setup 函数,它是 Composition API 的核心。setup 函数在组件创建之前执行,相当于 Vue2 中的 beforeCreatecreated 钩子函数的结合体。setup 函数的主要作用是初始化组件的状态和逻辑。

import { ref, onMounted, onUnmounted } from 'vue';

export default {
  setup() {
    const count = ref(0);

    onMounted(() => {
      console.log('Component is mounted!');
    });

    onUnmounted(() => {
      console.log('Component is unmounted!');
    });

    return {
      count,
    };
  },
};

3. 生命周期钩子函数的调用顺序

在 Vue3 中,生命周期钩子函数的调用顺序与 Vue2 有所不同。具体顺序如下:

  1. setup:在组件创建之前执行,用于初始化状态和逻辑。
  2. beforeMount:在挂载开始之前被调用。
  3. mounted:在组件挂载完成后被调用。
  4. beforeUpdate:在数据更新之前被调用。
  5. updated:在数据更新完成后被调用。
  6. beforeUnmount:在组件卸载之前被调用。
  7. unmounted:在组件卸载完成后被调用。

4. 生命周期钩子函数的异步支持

Vue3 的生命周期钩子函数支持异步操作,这意味着你可以在钩子函数中使用 async/await 来处理异步任务。例如:

import { onMounted } from 'vue';

export default {
  async setup() {
    const data = await fetchData();

    onMounted(async () => {
      await doSomething();
    });

    return {
      data,
    };
  },
};

5. 生命周期钩子函数的组合式 API

Vue3 的 Composition API 允许开发者将生命周期钩子函数组合在一起,以便更好地组织和管理代码。例如:

import { ref, onMounted, onUnmounted } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value++;
    };

    onMounted(() => {
      console.log('Component is mounted!');
    });

    onUnmounted(() => {
      console.log('Component is unmounted!');
    });

    return {
      count,
      increment,
    };
  },
};

Vue3 生命周期函数的具体使用

1. setup 函数

setup 函数是 Vue3 中最重要的生命周期钩子函数之一。它在组件创建之前执行,用于初始化组件的状态和逻辑。setup 函数接收两个参数:propscontext

import { ref } from 'vue';

export default {
  props: {
    initialCount: {
      type: Number,
      default: 0,
    },
  },
  setup(props, context) {
    const count = ref(props.initialCount);

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment,
    };
  },
};

2. onMountedonUnmounted

onMountedonUnmounted 是 Vue3 中用于处理组件挂载和卸载的生命周期钩子函数。它们分别在组件挂载和卸载时被调用。

import { onMounted, onUnmounted } from 'vue';

export default {
  setup() {
    onMounted(() => {
      console.log('Component is mounted!');
    });

    onUnmounted(() => {
      console.log('Component is unmounted!');
    });
  },
};

3. onBeforeUpdateonUpdated

onBeforeUpdateonUpdated 是 Vue3 中用于处理组件更新的生命周期钩子函数。它们分别在组件更新之前和更新之后被调用。

import { ref, onBeforeUpdate, onUpdated } from 'vue';

export default {
  setup() {
    const count = ref(0);

    onBeforeUpdate(() => {
      console.log('Component is about to update!');
    });

    onUpdated(() => {
      console.log('Component has been updated!');
    });

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment,
    };
  },
};

4. onBeforeUnmountonUnmounted

onBeforeUnmountonUnmounted 是 Vue3 中用于处理组件卸载的生命周期钩子函数。它们分别在组件卸载之前和卸载之后被调用。

import { onBeforeUnmount, onUnmounted } from 'vue';

export default {
  setup() {
    onBeforeUnmount(() => {
      console.log('Component is about to unmount!');
    });

    onUnmounted(() => {
      console.log('Component has been unmounted!');
    });
  },
};

Vue3 生命周期函数的实际应用

1. 数据获取

在 Vue3 中,可以使用 onMounted 钩子函数来获取数据。例如:

import { ref, onMounted } from 'vue';

export default {
  setup() {
    const data = ref(null);

    onMounted(async () => {
      const response = await fetch('https://api.example.com/data');
      data.value = await response.json();
    });

    return {
      data,
    };
  },
};

2. 事件监听

在 Vue3 中,可以使用 onMountedonUnmounted 钩子函数来添加和移除事件监听器。例如:

import { onMounted, onUnmounted } from 'vue';

export default {
  setup() {
    const handleResize = () => {
      console.log('Window resized!');
    };

    onMounted(() => {
      window.addEventListener('resize', handleResize);
    });

    onUnmounted(() => {
      window.removeEventListener('resize', handleResize);
    });
  },
};

3. 定时器

在 Vue3 中,可以使用 onMountedonUnmounted 钩子函数来启动和清除定时器。例如:

import { ref, onMounted, onUnmounted } from 'vue';

export default {
  setup() {
    const count = ref(0);

    let timer;

    onMounted(() => {
      timer = setInterval(() => {
        count.value++;
      }, 1000);
    });

    onUnmounted(() => {
      clearInterval(timer);
    });

    return {
      count,
    };
  },
};

总结

Vue3 在生命周期函数方面进行了一些重要的调整,主要体现在生命周期钩子函数的命名变化、setup 函数的引入、生命周期钩子函数的调用顺序、异步支持以及组合式 API 的使用。这些更改使得 Vue3 的生命周期函数更加灵活和强大,能够更好地满足现代前端开发的需求。

通过本文的介绍,相信你已经对 Vue3 的生命周期函数有了更深入的了解。在实际开发中,合理使用这些生命周期函数,可以帮助你更好地管理组件的状态和逻辑,提高代码的可维护性和可读性。希望本文对你有所帮助,祝你在 Vue3 的开发之旅中取得更大的成功!

推荐阅读:
  1. vue入门002~vue项目的两种创建方式
  2. Vue3中的TypeScript怎么使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue3

上一篇:初始化vue项目的过程 是什么

下一篇:vue插槽能解决的问题是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》