vue3 - 08.生命周期函数

<template>
  <div>
    <div ref="dom">{{str}}</div>
    <button @click="handleUpdate">点击触发更新生命周期函数</button>
  </div>
</template>
<script setup lang="ts">
    import {
        ref, 
        onBeforeMount, 
        onMounted, 
        onBeforeUpdate, 
        onUpdated, 
        onBeforeUnmount, 
        onUnmounted, 
        onRenderTracked, 
        onRenderTriggered
    } from 'vue'

    const str = ref<string>("xiaoming")
    const dom = ref<HTMLDivElement>()

    // vue3 的 setup 语法糖没有beforeCreate和created,直接用 setup 代替

    console.log("setup")

    // 创建前
    onBeforeMount(() => {
        console.log("创建前")
        // 在onBeforeMount读不到dom,因为这个时候,dom还没有被渲染
        console.log("dom ---> ", dom.value) // undefined
    })

    // 创建后
    onMounted(() => {
        console.log("创建后")
        // 在onMounted可以读到dom,因为这个时候,dom已经被渲染
        console.log("dom ---> ", dom.value) // <div></div>
    })

    // 更新前
    onBeforeUpdate(() => {
        console.log("更新组件前")
        // 在更新组建中获取dom,onBeforeUpdate获取到的同样也是更新之前的dom
        console.log("dom ---> ", dom.value?.innerText) // xiaoming
    })

    // 更新后
    onUpdated(() => {
        console.log("更新组件后")
        // 在更新组建中获取dom,onUpdated获取到的才是更新之后的dom
        console.log("dom ---> ", dom.value?.innerText) // xiaohong
    })

    // 销毁前
    onBeforeUnmount(() => {
        console.log("销毁前")
    })

    // 销毁后
    onUnmounted(() => {
        console.log("销毁后")
    })

    // 用于调试的两个生命周期函数
    // 默认先执行
    onRenderTracked((e) => {
        console.log(e)
    })
    // 当触发更新生命周期函数的时候执行并返回更新之后的数据
    onRenderTriggered((e) => {
        console.log(e)
    })

    const handleUpdate = () => {
        str.value = "xiaohong"
    }
</script>
<style scoped lang="less"></style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值