首页 > 其他分享 >【vue3入门】-【22】 组件生命周期

【vue3入门】-【22】 组件生命周期

时间:2024-05-13 23:23:38浏览次数:17  
标签:生命周期 console log 22 DOM 渲染 content vue3 组件

组件生命周期

每个Vue组件实例在创建是都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模版,挂载实例到DOM,以及在数据改变时更新DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。

生命周期函数都是会自己执行

image

app.vue

<template>
  <h3>组件的生命周期</h3>
  <p>{{ message }}</p>
  <button @click="UpdateMessage">更新</button>
</template>
<script>
/**
 * 生命周期函数:
 * 创建期:beforeCreate created
 * 挂载期:beforeMounte mounted
 * 更新期:beforeUpdate updated
 * 销毁期:beforeUmounted unmounted
 */
export default{
  beforeCreate(){
    console.log("组件创建之前");
  },
  created(){
    console.log("组件创建之后");
  },
  beforeMount(){
    console.log("组件渲染之前");
  },
  mounted(){
    console.log("组件渲染之后");
  },
  beforeUpdate(){
    console.log("组件更新之前");
  },
  updated(){
    console.log("组件更新之后");
  },
  beforeUnmount(){
    console.log("组件销毁之前");
  },
  unmounted(){
    console.log("组件销毁之后");
  },
  data(){
    return{
      message:"手动更新之前"
    }
  },
  methods:{
    UpdateMessage(){
      this.message = "手动更新后"
    }
  }
}
</script>

image

生命周期应用

组件的生命周期会随着我们对vue的了解越多,也会越来越重要,这里我们先讲两个常用的应用

  1. 通过ref获取元素DOM结构
  2. 模拟网络请求渲染数据

通过ref获取元素DOM结构

UseComponent.vue

<template>
    <h3>组件生命周期函数应用</h3>
    <p ref="name">测试组件Use</p>
</template>
<script>
export default {
    beforeMount() {
        console.log(this.$refs.name); // 读取到的是undefined
    },
    mounted() {
        console.log(this.$refs.name); // 读取到的是DOM元素
    }
}
</script>

通过网络请求渲染数据

一般来说都是需要等结构出来之后才渲染数据

UseComponent.vue

<template>
    <h3>组件生命周期函数应用</h3>
    <p ref="name">测试组件Use</p>
    <ul>
        <li v-for="( item, index ) of banner" :key="index">
            <h3>{{ item.title }}</h3>
            <p>{{ item.content }}</p>
        </li>
    </ul>
</template>
<script>
export default {
    data() {
        return {
            banner: []
        }
    },
    created() {
        // 模拟接口响应,组件创建完成后执行此函数
        this.banner = [{
            title: "test1",
            content: "test1 content"
        }, {
            title: "test2",
            content: "test1 content"
        },
        {
            title: "test3",
            content: "test1 content"
        }]
    },
    beforeMount() {
        console.log(this.$refs.name); // 读取到的是undefined
    },
    mounted() {
        // 组件挂载完成后,已经渲染完成DOM元素,(最常用),先渲染结构,再渲染数据
        console.log(this.$refs.name); // 读取到的是DOM元素
    }
}
</script>

以上内容出自
【【2023最新版】Vue3从入门到精通,零基础小白也能听得懂,写得出,web前端快速入门教程】 https://www.bilibili.com/video/BV1Rs4y127j8/?share_source=copy_web&vd_source=94c3d5330a46438059359e8dd2494fe9

标签:生命周期,console,log,22,DOM,渲染,content,vue3,组件
From: https://www.cnblogs.com/T-Ajie/p/18190281

相关文章

  • 【django学习-22】列表界面搜索功能
    1.需求:靓号列表界面,根据手机号码模糊匹配2.前端传search_data<divstyle="float:right;width:300px;"><formmethod="get"><divclass="input-group"><inputtype="text"name="q"clas......
  • Vue3学习(二十四)- 文档页面功能开发
    写在前面这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现。说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考,比如布局、交互设计的实现等等。文档页面功能开发1、任务拆解增加文档页面,......
  • linux里安装sql2022详细步骤
    https://learn.microsoft.com/zh-tw/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-linux-ver16&preserve-view=true&tabs=ubuntu2004https://learn.microsoft.com/zh-tw/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-linux-ver16&a......
  • Vue3得通信方式
    1父向子props(defibeProps),子向父自定义事件(defineEmits)2时间总线(mitt插件)3v-model(可以绑定多个v-model)a给子组件传递props[modelValue]b给子组件传递自定义事件@update:modelValue列子:<Childv-model:name="name"v-model:sex="sex>4useAttrs(引入useAttr......
  • vue3 - App.vue示例1
    示例1App.vue<!--插入Vue库的CDN链接--><scriptsrc="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script><scriptsetup>importHelloWorldfrom'./components/HelloWorld.vue'</script><templa......
  • 力扣224.基本计算器(困难)
    题目​ 给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值。解题思路我们可以使用两个栈nums和ops。nums:存放所有的数字ops:存放所有的数字以外的操作,+/-也看做是一种操作然后从前往后做,对遍历到的字符做分情况讨论:空格:跳过(:直接加入ops......
  • P9425 [蓝桥杯 2022 国 B] 2022
    一、题目描述将\(2022\)拆分成\(10\)个互不相同的正整数之和,有多少种方案?二、问题简析令\(dp[i][j]=\)\(i\)的\(j\)划分的方案数(满足互不相同的正整数)。有两种实现方式:\(dp[i][j]\)不含\(1\)在\(dp[i-j][j]\)的基础上,每个元素+1。有\(j\)个元素,每个元素+1,......
  • EXP练手:CVE-2022-22963从编写到调试排错
    写什么?之前在使用Spring相关工具时候发现其中漏洞利用模块CVE-2022-22963需要手动利用(2023年的笔记,现在不确认工具是否更新了)GitHub-AabyssZG/SpringBoot-Scan:针对SpringBoot的开源渗透框架,以及Spring相关高危漏洞利用工具于是尝试编写这个exp,对编程不熟悉的可以看看我的Go......
  • win10 22H2
    Windows10updatehistoryhttps://support.microsoft.com/en-gb/topic/windows-10-update-history-8127c2c6-6edf-4fdf-8b9f-0f7be1ef3562UpdatesforWindows10,version22H2April9,2024—KB5036892(OSBuilds19044.4291and19045.4291) ......
  • 2022广东大学生攻防大赛WP
    MISC复合尝试导出http数据发现文件类型和文件名都被改过把pass.md改为pass.zip,发现打不开添加文件头解压得到Emklyusg=E2=80=82gni=E2=80=82bvvymlag=E2=80=82tsqic=E2=80=82colz=E2=80=82jx=moxvl=E2=80=82tiwhz=E2=80=82ebmee,=E2=80=82Zhjeoig=E2=80=82Krpvpi-Zgvlyv......