写一个简单的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>
保存后刷新页面,可以看到控制台打印出了
在点击
+1
按钮后会打印
首先需要注意,在vue3
中,生命周期在使用时,需要按需进行引入。使用了setup()
替代了beforeCreate
和beforeCreate
。在兼容性方面,vue2.X
生命周期在vue3
仍然可以使用。在vue3
中使用生命周期钩子时,以箭头函数的方式写在setup()
中,并用;
分开
。在看一下两者之间的生命周期对比
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
尤雨溪说得是,mount
比destroy
更形象,也跟beforeMount
对应上
本次学习到此结束,有问题欢迎大家留言评论,一起学习。啦啦啦啦