写一个简单的vue文件,每次点击的时候,让num加一

<template>
  <div class="life">
    {{ num }}
    <button @click="addNum">加1</button>
  </div>
</template>
<script lang="ts">
import {
  defineComponent,
  reactive,
  toRefs,
  onMounted,
  onBeforeMount,
  onBeforeUpdate,
  onUpdated,
} from "vue";

export default defineComponent({
  name: "Life",
  components: {},
  setup() {
    console.log("setup");
    const data = reactive({
      num: 1,
      addNum: () => {
        data.num++;
      },
    });
    onBeforeMount(() => {
      console.log("onBeforeMount");
    });

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

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

    const refData = toRefs(data);

    return {
      ...refData,
    };
  },
});
</script>

<style lang="scss">
.life {
  margin-top: 40px;
}
</style>

alt

保存后刷新页面,可以看到控制台打印出了 alt 在点击+1按钮后会打印 alt


首先需要注意,在vue3中,生命周期在使用时,需要按需进行引入。使用了setup()替代了beforeCreatebeforeCreate。在兼容性方面,vue2.X生命周期在vue3仍然可以使用。在vue3中使用生命周期钩子时,以箭头函数的方式写在setup()中,并用;分开alt 。在看一下两者之间的生命周期对比

Vue2 vue3
beforeCreate setup()
created setup()
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeDestroy onBeforeUnmount
destroyed onUnmounted
activated onActivated
deactivated onDeactivated
errorCaptured onErrorCaptured

很容易的可以看出vue3的钩子函数基本上都是在vue2的基础上加上一个on,特殊的是, 1.BeforeDestroy变成了onBeforeUnmount
2.destroyed变成了onUnmounted
尤雨溪说得是,mountdestroy更形象,也跟beforeMount对应上

本次学习到此结束,有问题欢迎大家留言评论,一起学习。啦啦啦啦