跟小满老师学vue3 第十二章 生命周期 & 源码

vue2生命周期钩子,如图

 vue3生命周期钩子

 setup语法糖模式下vue生命周期钩子

App.vue代码

<template>
  <h1>生命周期</h1>
  <A v-if="flag"></A>
  <button @click="flag = !flag">创建-销毁</button>
</template>

<script setup lang="ts">
import { ref,reactive } from 'vue'
import A from './components/A.vue'
const flag = ref<Boolean>(true)
</script>

子组件A.vue代码

<template>
  <h3>我是组件 好家伙</h3>
  <div ref="div">{{ str }}</div>
  <button @click="change">修改Str</button>
  <hr>
</template>

<script setup lang="ts">
import {ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted, onRenderTracked, onRenderTriggered} from 'vue'
// beforeCreate created setup语法糖模式是没有这两个生命周期钩子 setup 去代替
// onBeforeMount 读不到dom onMounted可以读取dom
// onBeforeUpdate 获取的是更新之前的dom onUpdated 获取更新之后dom
console.log('setup')
const str = ref<string>('小满')
const div = ref<HTMLDivElement>()
const change = () => {
  str.value = '我被改了'
}

// 创建
onBeforeMount(() => {
  console.log('创建之前========>',div.value)
})
onMounted(() => {
  console.log('创建完成========>',div.value)
})
// 更新的钩子
onBeforeUpdate(() => {
  console.log('更新组件之前========>',div.value?.innerText)
})

onUpdated(() => {
  console.log('更新组件完成========>',div.value?.innerText)
})
// 销毁
onBeforeUnmount(() => {
  console.log('销毁之前========>',div.value)
})
onUnmounted(() => {
  console.log('销毁完成========>')
})

onRenderTracked((e) => { //跟踪响应式数据状态,当页面未渲染前执行
  console.log(e)
})
onRenderTriggered((e) => { //修改响应式数据,当页面未更新前执行
  console.log(e)
})
</script>

运行结果

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值