Vue3的生命周期

最基本的几个阶段:

创建阶段:setup

挂载阶段:onBeforeMount, onMounted

更新阶段:onBeforeUpdate, onUpdated

卸载阶段:onBeforeUnmount, onUnmounted

实例:

App.vue

<template>
  <!-- 设定Person组件是否显示 -->
  <Person v-if="isShow" /> 
</template>
  
<script lang="ts" setup name="App">
  import Person from './components/Person.vue';
  import {ref, onMounted} from 'vue'
  let isShow = ref(true)

  onMounted(()=>{
    console.log("'App.vue' mounted")
  })
  
</script>

<style scoped>
/* 可以添加一些样式 */
</style>

Person.vue

<template>
    <div class="person">
      {{ sum }}
      <!-- 点击按钮后会执行onBeforeUpdate和onUpdated -->
      <button @click="add">+1</button>
    </div>
</template>

<script lang="ts" setup name = "Person">
  import {ref, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted} from 'vue'


  // data
  let sum = ref(0)

  // function
  function add() {
    sum.value += 1
  }

  // create
  console.log('create')

  // before mount
  onBeforeMount(()=>{console.log('before mount')})

  // mounted
  onMounted(()=>{console.log('mounted')})

  // before update
  onBeforeUpdate(()=>{console.log('before update')})

  // updated
  onUpdated(()=>{console.log('updated')})

  // before unmount
  onBeforeUnmount(()=>{console.log('before unmounted')})

  // unmounted
  onUnmounted(()=>{console.log('umounted')})
</script>

<style scoped>
  /* 可以添加样式 */
</style>

展示: 

默认状态下:

前三个是Person.vue的输出,先执行了Pers.vue,最后才是App.vue的挂载内容。

即App永远是最后挂载的

原因:

Vue3项目的执行顺序是:

index.html => main.ts =>App.vue

而在App.vue中,先解析  <Person v-if="isShow" /> ,即运行Person.vue的代码。 

最后等App.vue中template的内容全部解析完了,才执行了它script的

 onMounted(()=>{
    console.log("'App.vue' mounted")
  })

点击按钮后:

更改App.vue中isShow的布尔值true为false后:


 

相关推荐

  1. vue3生命周期

    2024-03-24 16:20:03       25 阅读
  2. Vue3生命周期

    2024-03-24 16:20:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 16:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 16:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 16:20:03       82 阅读
  4. Python语言-面向对象

    2024-03-24 16:20:03       91 阅读

热门阅读

  1. Spring Boot的静态资源自动配置原理

    2024-03-24 16:20:03       43 阅读
  2. es 集群开机自动启动

    2024-03-24 16:20:03       36 阅读
  3. Rust 双向链表 LinkedList 和安全删除元素的方法

    2024-03-24 16:20:03       47 阅读
  4. cloud微服务

    2024-03-24 16:20:03       44 阅读
  5. 5.79 BCC工具之tcpaccept.py解读

    2024-03-24 16:20:03       42 阅读
  6. 外部提供控制程序

    2024-03-24 16:20:03       40 阅读
  7. Python基础语法(二)

    2024-03-24 16:20:03       46 阅读
  8. 大厂面试--列举并解释一下 http的所有请求方法?

    2024-03-24 16:20:03       37 阅读