当前位置: > > > Vue.js 3 - Composition API使用详解8(组件生命周期函数)

Vue.js 3 - Composition API使用详解8(组件生命周期函数)

    setup 函数不但可以替代 datamethodscomputedwatch 等选项,还可以替代生命周期函数(钩子)。如果想在 setup 函数中使用组件生命周期函数,那么可以通过直接导入 onXxx 函数来注册生命周期函数,下面通过样例进行演示。

八、组件生命周期函数

1,基本介绍

(1)下表为 Vue.js 3 提供的 Composition API(组合式 API)的生命周期函数,并对比 Composition APIOptions API(选项式 API)的生命周期函数的对应关系。
选项式 API 组合式 API
beforecreate -
created -
beforeMount onBeforeMount
mounted onMounted
beforeupdate onBeforeUpdate
updated onUpdated
beforeunmount onBeforeUnmount
unmounted onUnmounted
activated onActivated
deactivated onDeactivated

(2)可以看到,Composition API 没有提供 beforeCreatecreated 生命周期函数,而是直接使用 setup 函数代替。需要注意的是,setup 函数会在 beforeCreate 之前被调用。
提示:因为 setup 是围绕 beforeCreatecreated 生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在 setup 函数中编写。 

2,样例代码

(1)下面代码在组件中注册 onMountedonUpdatedonUnmounted 生命周期函数,其中 onMounted 生命周期函数被注册了两次。 
<template>
    <div>
        <button @click="increment">点击+1:{{ counter }}</button>
    </div>
</template>

<script>
import { onBeforeMount, onMounted, onUpdated, onUnmounted, ref } from 'vue';

export default {
    setup() {
        const counter = ref(0);
        const increment = () => counter.value++

        // 生命周期钩子函数 (同一个生命周期函数可以存在多个)
        onBeforeMount(() => {
            console.log("App onBeforeMount");
        })
        onMounted(() => {
            console.log("App Mounted1");
        })
        onMounted(() => {
            console.log("App Mounted2");
        })
        onUpdated(() => {
            console.log("App onUpdated");
        })
        onUnmounted(() => {
            console.log("App onUnmounted");
        })

        return { counter, increment }
    }
}
</script>

(2)在浏览器中刷新页面后,在控制台中会依次打印“App onBeforeMount”“App Mounted1”“App Mounted2”,每次单击“单击+1”按钮,都会打印一次“App onUpdated”。
评论0