vue3基础入门系列--④生命周期

生命周期

官方生命周期映射关系 👇

vue2(选项式 API)vue3(组合式 API)
beforeCreateuse setup()
createduse setup()
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeDestroyonBeforeUnmount
destroyedonUnmounted
errorCapturedonErrorCaptured
renderTrackedonRenderTracked
renderTriggeredonRenderTriggered
activatedonActivated
deactivatedonDeactivated

在组合式 API 中,取消了beforeCreate,created两个钩子,选项式API中的周期钩子在使用之前都需要在setUp()中先引用,名字与以前相比增加了前缀on,除了beforeDestroy,destroyed两个周期名字发生了变化.

用一个demo来看看执行顺序.先在父组件中引入子组件,并在父组件控制子组件的创建与销毁,之后我们把所有生命周期写在组件中观察

<!-- 父组件 -->
<template>
  <Children v-if="state"></Children>
  <hr>
  <p>父组件</p>
  <!-- 控制子组件创建销毁 -->
  <button @click="change">销毁/创建组件</button>
</template>

<!-- 子组件 -->
<template>
  <div>
    <p>子组件</p>
    <hr>
    <h2 ref="h">{{str}}</h2>
    <button @click="change">修改数据</button>
  </div>
</template>
<script setup>
//同样先引入,如何自动引入见第一期配置
import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue'
const h = ref()
const str = ref('原始数据')
const change = () => {
  str.value = '我被修改了'
}
console.log('setup=======>');
onBeforeMount(() => {
  console.log('onBeforeMount=======>', h.value);
})
onMounted(() => {
  console.log('onMounted=======>', h.value);
})
onBeforeUpdate(() => {
  //这里打印的是dom中文本值,也就是h2标签的内容
  console.log('onBeforeUpdate=======>', h.value.innerHTML);
})
onUpdated(() => {
  //这里打印的是dom中文本值,也就是h2标签的内容
  console.log('onUpdated=======>', h.value.innerHTML);
})
onBeforeUnmount(() => {
  console.log('onBeforeUnmount=======>','销毁前');
})
onUnmounted(() => {
  console.log('onUnmounted=======>','销毁完成');
})
</script>

①点击创建按钮,看到控制台输出了三行,分别是触发了setup中的打印,onBeforeMount,onMounted两个周期钩子.也就是说在setup中的代码,在组件创建时会自动自行并且优先级最高,约等于之前的beforeCreate,created,之后触发的onBeforeMount输出undefined,说明此时dom还没有挂载上.在之后的onMounted正确的输出了dom元素.这三个钩子的共同特点就是组件创建后自动触发.

②点击子组件中的修改数据按钮,控制台又多了两行输出,分别是onBeforeUpdate,onUpdated数据更新前和数据更新后,我们打印的是h2标签中的文本,虽然页面已经发生了变化,但是onBeforeUpdate输出的依然是旧dom的文本值,这两个周期钩子,会在数据变化引起dom变化时触发.

③再次点击创建按钮,此时执行的是销毁子组件.这事触发的就是销毁钩子onBeforeUnmount,onUnmounted

这里只介绍这个几个常用的钩子,与vue2相比没有太大变化,大致的执行顺序触发时机都在上述demo中都有体现.
更多详见官网:https://cn.vuejs.org/api/composition-api-lifecycle.html#ondeactivated

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云苍狗い

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值