Skip to content

1. vue2.x 的生命周期

lifecycle_2

2. vue3 的生命周期

lifecycle_3

3.生命周期对比

  • beforeCreate -> setup 代替
  • created -> setup 代替
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated

// 2.0 中为 beforeDestroy 和 destroyed

  • beforeUnmount -> onBeforeUnmount
  • mounted -> onUnmounted

// 用于处理错误

  • errorCaptured -> onErrorCaptured

// 新增的专门用于调试

  • renderTracked -> onRenderTracked
  • renderTriggered -> onRenderTriggered
vue
<template>
  <div class="about">
    <h2>msg: {{ msg }}</h2>
    <hr />
    <button @click="update">更新</button>
  </div>
</template>

<script lang="ts">
import {
  ref,
  onMounted,
  onUpdated,
  onUnmounted,
  onBeforeMount,
  onBeforeUpdate,
  onBeforeUnmount,
} from "vue";

export default {
  beforeCreate() {
    console.log("beforeCreate()");
  },

  created() {
    console.log("created");
  },

  beforeMount() {
    console.log("beforeMount");
  },

  mounted() {
    console.log("mounted");
  },

  beforeUpdate() {
    console.log("beforeUpdate");
  },

  updated() {
    console.log("updated");
  },

  beforeUnmount() {
    console.log("beforeUnmount");
  },

  unmounted() {
    console.log("unmounted");
  },

  setup() {
    const msg = ref("abc");

    const update = () => {
      msg.value += "--";
    };

    onBeforeMount(() => {
      console.log("--onBeforeMount");
    });

    onMounted(() => {
      console.log("--onMounted");
    });

    onBeforeUpdate(() => {
      console.log("--onBeforeUpdate");
    });

    onUpdated(() => {
      console.log("--onUpdated");
    });

    onBeforeUnmount(() => {
      console.log("--onBeforeUnmount");
    });

    onUnmounted(() => {
      console.log("--onUnmounted");
    });

    return {
      msg,
      update,
    };
  },
};
</script>