vue2 生命周期基本使用

基础介绍 

Vue.js 提供了丰富的生命周期钩子函数,开发者可以通过这些钩子函数来控制组件在不同状态下的行为。Vue 组件的生命周期是指从组件实例化、初始化、渲染、更新到销毁的整个过程。

Vue 组件的生命周期钩子函数如下:

  1. beforeCreate: 在实例创建之前调用,此时还没有调用 data 选项中定义的数据和 methods 方法。
  2. created: 实例创建完成后调用,此时已经完成了数据的观测(obervation),但尚未挂载DOM,$el 属性尚不可用。
  3. beforeMount: 在挂载开始之前调用,相关的 render 函数首次被调用。这个时候还没有开始挂载节点,$el 属性尚不可用。
  4. mounted: el 被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果rootinstance被挂载到一个文档内元素上,当mounted被调用时vm.el 也在文档内。
  5. beforeUpdate: 数据更新时调用,发生在虚拟 DOM 打补丁之前。
  6. updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
  7. beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。
  8. destroyed: Vue 实例销毁后调用。调用后,所有的事件监听器会被移除,所有的子实例也都会被销毁。

这些生命周期钩子为开发者提供了在不同阶段进行操作的机会,例如数据的初始化、DOM 的操作、数据的请求等都可以在这些钩子中进行。

 

效果展示 

 

代码 效果一

  <template>    <div>    <h1>{{ message }}</h1>    <button @click="changeMessage">点击修改</button>    <button @click="del">点击删除</button>    </div>    </template>    <script>    export default {    data() {    return {    message: 'Hello, Vue!'    };    },    beforeCreate() {    console.log('beforeCreate,实例创建之前调用');    },    created() {    console.log('created,实例创建完成后调用');    },    beforeMount() {    console.log('beforeMount,在挂载开始之前调用');    },    mounted() {    console.log('mounted,在挂载之后调用');    },    beforeUpdate() {    console.log('beforeUpdate,数据更新时调用');    },    updated() {    console.log('updated,由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子');    },    beforeDestroy() {    console.log('beforeDestroy,实例销毁之前调用');    },    destroyed() {    console.log('destroyed,Vue 实例销毁后调用');    },    methods: {    changeMessage() {    this.message = 'Y你好!';    },   del() {   delete this.message;   this.$destroy(); // 手动销毁Vue实例   }   }   };   </script>

 代码 效果二 (稍微复杂)

<template>  <div>  <h1>{{ message }}</h1>  <h1>{{ param }}</h1> <button @click="changeMessage">点击修改</button>  <button @click="deleteComponent">点击删除</button>  </div>  </template>  <script>  export default {  data() {  return {  message: 'Hello, Vue!',  param: ''  };  },  created() {  console.log('组件已创建');  },  // 如果 在初始的时候一直 初始化 beforeMount   this.param = 'beforeMount';   //  然后进阶就会出发下边的跟新 就会导致默认循环 浏览器无限循环 // 所以 初始化 param 就不要马上出发更新 // 可以尝试解开注释  查看效果beforeMount() {  // this.param = 'beforeMount';  console.log('挂载开始');  console.log(this.param,'挂载开始')},  mounted() {  // this.param = 'mounted';  console.log('组件已挂载'); console.log(this.param,'组件已挂载') },  beforeUpdate() {  // this.param = 'beforeUpdate';  console.log('数据更新前');  console.log(this.param,'数据更新前') },  updated() {  // this.param = 'updated';  console.log('数据已更新');  console.log(this.param,'数据已更新') },  beforeDestroy() {  this.param = 'beforeDestroy';  console.log('组件销毁前');  console.log(this.param,'组件销毁前') },  destroyed() {  this.param = 'destroyed';  console.log('组件已销毁');  console.log(this.param,'组件已销毁') },  methods: {  changeMessage() {  this.message = 'Y你好!';  this.param = 'changeMessage';  },  deleteComponent() {  this.$destroy(); // 手动销毁组件实例  this.param = 'deleteComponent';  }  }  };  </script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/287076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目中webpack优化配置(持续更新)

项目中webpack优化配置 1. 开发效率&#xff0c; 体验 DLL&#xff08;开发过程中减少构建时间和增加应用程序的性能&#xff09; 使用 DllPlugin 进行分包&#xff0c;使用 DllReferencePlugin(索引链接) 对 manifest.json 引用&#xff0c;让一些基本不会改动的代码先打包…

创建个人网站(二)前端主页设计和编写一(太阳移动)

前言 以下内容纯纯当乐子来看就行&#xff0c;知识分享一下这样设计的原因&#xff0c;想看正文直接见下一节 为什么创建个人网站一之后几天没有动静了呢&#xff0c;一个是家里有事实在比较忙&#xff0c;第二个原因是没想到主页要设计成什么样&#xff0c;知道前两天问我姐什…

基于“Galera+MariaDB”搭建多主数据库集群的实例

1、什么是多主数据库集群 多主数据库集群是一种数据库集群架构&#xff0c;每个节点都可以接收写入操作和读取操作&#xff0c;并且通过心跳机制同步数据&#xff0c;保证数据一致性和高可用性。因多主数据库集群每个节点都可以承担读写操作&#xff0c;因此它可以充分利用各个…

【兔子王赠书第13期】AI绘画实战:Midjourney从新手到高手

文章目录 写在前面AI绘画推荐图书一本书读懂AI绘画关键点内容简介作者简介 推荐理由粉丝福利写在后面 写在前面 如今AI技术已经进入了我们的日常学习生活中&#xff0c;如何用一本书轻松玩转AI绘画&#xff0c;领略无限艺术可能呢&#xff1f; AI绘画 AI绘画是指利用人工智能…

基于SSM的马病管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

yolov5障碍物识别-雪糕筒识别(代码+教程)

简介 这是一个检测交通锥并识别颜色的项目。我使用 yolov5 来训练和检测视锥细胞。此外&#xff0c;我使用 k 均值来确定主色&#xff0c;以对锥体颜色进行分类。目前&#xff0c;支持的颜色为红色、黄色、绿色和蓝色。其他颜色被归类为未知。 数据集和注释 我使用了一个自收…

定位咨询:企业市场竞争中的定海神针

什么是定位咨询?定位咨询能给企业带来什么帮助?在现代市场的激烈竞争中&#xff0c;定位咨询不仅是企业区分自己的重要工具&#xff0c;更是它们赢得市场份额的关键。以下是定位咨询的定义和几个核心方面&#xff0c;笔者将列举具体案例说明其重要性和实用性。 定位咨询的简单…

【JUC】三十一、AQS源码

&#x1f4d5;前置笔记&#xff1a;【AQS核心概念与核心类】 文章目录 1、ReentrantLock与AQS类的联系2、lock方法3、acquire方法4、源码分析Demo背景案例5、tryAcquire方法6、addWaiter方法7、acquireQueued方法8、unlock方法9、cancelAcquire方法 AQS是JUC的基石&#xff0c;…

自动化测试流程(超详细整理)

最近很多小伙伴问我自动化测试到底该怎么做&#xff1f;流程是什么样的&#xff1f;在每个阶段都需要注意什么&#xff1f;本文也就主要从自动化测试的基本流程入手&#xff0c;对面试自动化测试工程师的同学会有不少帮助。对于在职的朋友&#xff0c;也可以参考此流程&#xf…

15 使用v-model绑定单选框

概述 使用v-model绑定单选框也比较常见&#xff0c;比如性别&#xff0c;要么是男&#xff0c;要么是女。比如单选题&#xff0c;给出多个选择&#xff0c;但是只能选择其中的一个。 在本节课中&#xff0c;我们演示一下这两种常见的用法。 基本用法 我们创建src/component…

继电器的工作原理及驱动电路

继电器是具有隔离功能的自动开关元件&#xff0c;广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电了设备中&#xff0c;是最重要的控制元件之一。继电器实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。…

高级桌面编程(二)

一、前言 文章的续作前文是&#xff1a; 高级桌面编程&#xff08;一&#xff09;-CSDN博客https://blog.csdn.net/qq_71897293/article/details/135072204?spm1001.2014.3001.5502 二、自定义控件 1创建自定义控件&#xff0c;如下图所示&#xff1a; 2 在创建的页面可以…