首页 > 其他分享 >组件生命周期

组件生命周期

时间:2024-12-24 09:55:26浏览次数:3  
标签:生命周期 console log sum 完毕 卸载 组件 挂载

对生命周期的理解

参考地址:https://cn.vuejs.org/guide/essentials/lifecycle.html

注意:以下只说明的常用的几个组件生命周期,并不是所有。

为了测试生命周期,下载了对应vue2所需要的 vue.js devtools 6.6.4 来源于谷歌商城,这里有时不显示注意清理缓存,或者刷新,已经卸载换了最新版本

​ 概念:Vue组件实例在创建时要经历一系列的初始化步骤,在此过程中Vue会在合适的时机,调用特定的函数,从而让开发者有机会在特定阶段运行自己的代码,这些特定的函数统称为:生命周期钩子

​ 规律:生命周期整体分为四个阶段,分别是:创建、挂载、更新、销毁,每个阶段都有两个钩子,一前一后。

Vue2的生命周期

​ 创建阶段:beforeCreatecreated

​ 挂载阶段:beforeMountmounted

​ 更新阶段:beforeUpdateupdated

​ 销毁阶段:beforeDestroydestroyed

参考代码( /* eslint-disable */ //取消一下的代码检查):

<!-- 组件App -->
<template>
  <div id="app">
    <PersonComponents v-if="isShow"/>
  </div>
</template>

<script>
import PersonComponents from './components/PersonComponents.vue'

export default {
  name: 'App',
  components: {
    PersonComponents
  },
  data() {
    return {
      isShow:true
    }
  }
}
</script>


<!-- 组件PersonComponents -->
<template>
  <div class="person">
    <h2>当前求和为: {{ sum }}</h2>
    <button @click="add">点我sum+1</button>
  </div>
</template>

<script>
export default {
  /* eslint-disable */    //取消代码检查
  name: 'PersonComponents',
  //数据
  data() {
    return {
      sum: 0
    }
  },
  //方法
  methods:{
    add() {
      this.sum += 1;
    }
  },
  //创建前
  beforeCreate() {
    console.log('beforeCreate: 创建前');
  },
  //创建后
  created () {
    console.log('created: 创建完毕');
  },
  //挂载(把组件塞进浏览器)前
  beforeMount() {
    console.log('beforeMount: 挂载前');
  },
  //挂载后
  mounted() {
    console.log('mounted: 挂载后');
  },
  //更新前
  beforeUpdate() {
    console.log('beforeUpdate: 更新前');
  },
  //更新后
  updated() {
    console.log('updated: 更新后');
  },
  //销毁前
  beforeDestroy() {
    console.log('beforeDestroy: 销毁前');
  },
  //销毁后
  destroyed() {
    console.log('destroy: 销毁后');
  }
}
</script>

<style>
  .person {
    background-color: skyblue;
    padding: 20px;
    border-radius: 10px;
    box-shadow: 0 0 10px;
  }
</style>

Vue3的生命周期

注意:先子后父

​ 创建阶段:setup

​ 挂载阶段:onBeforeMountonMounted

​ 更新阶段:onBeforeUpdateonUpdated

​ 卸载阶段:onBeforeUnmountonUnmounted

​ 常用的钩子:onMounted(挂载完毕)、onUpdated(更新完毕)、onBeforeUnmount(卸载之前)

参考代码:

<!-- App父组件 -->
<template>
  <div class="app">
    <Person v-if="show"/>
  </div>
</template>

<script lang="ts" setup name="App">
  import Person from './components/Person.vue';
  import { ref, onMounted } from 'vue';

  //数据
  let show = ref(true);

  //挂载完毕
  onMounted(() => {
    console.log('父-挂载完毕');
  })
</script>


<!-- Person子组件 -->
<template>
  <div class="person">
    <h2>当前求和为:{{ sum }}</h2>
    <button @click="add">点我sum+1</button>
  </div>
</template>

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

  //数据
  let sum = ref(0);

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

  //创建  setup 就是创建
  console.log('创建');

  //挂载
  onBeforeMount(() => {
    console.log('挂载前');
  })

  //挂载完毕
  onMounted(() => {
    console.log('子-挂载完毕');
  })

  //更新之前
  onBeforeUpdate(()=>{
    console.log('更新之前');
  })

  //更新完毕
  onUpdated(()=>{
    console.log('更新完毕');
  })

  //卸载之前
  onBeforeUnmount(()=>{
    console.log('卸载之前');
  })

  //卸载完毕
  onUnmounted(()=>{
    console.log('卸载完毕');
  })
</script>

<style scoped>
.person {
  background-color: skyblue;
  box-shadow: 0 0 10px; /* 盒子阴影 */
  border-radius: 10px;
  padding: 20px;
}

button {
  margin: 0 5px;
}
</style>

常用钩子

​ 常用的钩子:onMounted(挂载完毕)、onUpdated(更新完毕)、onBeforeUnmount(卸载之前)

标签:生命周期,console,log,sum,完毕,卸载,组件,挂载
From: https://www.cnblogs.com/fragmentary/p/18626695

相关文章

  • 组件间关系
    组件间关系定义和使用组件间关系有时需要实现这样的组件:<custom-ul><custom-li>item1</custom-li><custom-li>item2</custom-li></custom-ul>这个例子中,custom-ul和custom-li都是自定义组件,它们有相互间的关系,相互间的通信往往比较复杂。此时在组件定义时加......
  • 组件生命周期
    组件生命周期组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。其中,最重要的生命周期是createdattacheddetached,包含一个组件实例生命流程的最主要时间点。组件实例刚刚被创建好时,created生命周期被触发。此时,组件......
  • 华为仓颉鸿蒙Next原生UI基础组件Search
    提供搜索框组件,用于提供用户搜索内容的输入区域。子组件无构造函数init(String,String,Option,Option)publicinit(value!:String="",placeholder!:String="",icon!:Option<CJResource>=Option.None,controller!:Option<SearchController>=Option.......
  • 全解!!!!vue/和react组件
    简介Vue和React是目前前端最火的两个框架。不管是面试还是工作可以说是前端开发者们都必须掌握的。今天我们通过对比的方式来学习Vue和React的组件传值这一部分。本文首先讲述Vue2、Vue3、React的组件传值方式,然后具体介绍了每种传值的应用场景以及具体的使用。最后对比总结......
  • Vue3——生命周期
    生命周期分为四个阶段:创建、挂载、更新、销毁(卸载)Vue2:创建阶段:beforeCreate、created挂载阶段:beforeMount、mounted更新阶段:beforeUpdate、updated销毁阶段:beforeDestroy、destroyedvue3:创建阶段:setup挂载阶段:onBeforeMount、onMounted......
  • Bean生命周期配置
    Bean生命周期配置init-method:指定类中的初始化方法名称destroy-method:指定类中销毁方法名称Bean实例化三种方式1)使用无参构造方法实例化​它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败<beanid="userDao"class="com.itheima.d......
  • Vue.js组件通信深度解析:构建高效、灵活的数据流
    Vue.js组件通信深度解析:构建高效、灵活的数据流引言在现代Web开发中,组件化是实现高效、可维护和可扩展代码的关键。Vue.js作为一款流行的前端框架,提供了强大的组件系统,使得开发者可以轻松地创建、注册和管理组件。然而,组件之间的通信是构建复杂应用时不可避免的问题。本文......
  • Vue3封装一个Element的自定义上传组件
    封装一个ElementPlus的自定义上传组件写在前面,工作中要封装一个文件上传组件,想着以后肯定也能用得到,就给记录了下来文章通篇借鉴的是这位大佬的,有需要的可以去看看https://blog.51cto.com/u_15295608/3527047直接上代码:先看样式:就是这样子了!!!,这是个弹窗的形式,有空我再整......
  • Vue.js组件开发-路由与视图切换
    在Vue.js中,路由与视图切换是通过VueRouter来实现。VueRouter提供了声明式的路由配置、嵌套路由、动态路由匹配、路由参数、路由守卫等功能。基本概念‌路由‌:定义URL路径和组件之间的映射关系。‌视图‌:与特定路由相关联的组件,当用户访问某个路由时,对应的视图组件会被渲......
  • 我在使用Rust编程时,只在编译期提示要手动标注生命周期时才进行标注,这样可以吗?
    在使用Rust编程时,只在编译器提示需要标注生命周期时才进行标注是一种可以接受的初学者实践,但随着经验积累和代码复杂度增加,这种方式可能会有以下问题和限制:1.优点:简单、快速入门编译器友好:Rust的借用检查器非常强大,大部分情况下会推断出正确的生命周期,尤其是在简单的函数......