当前位置: 首页 > news >正文

第十一章 Vue生命周期及生命周期的四个阶段

目录

一、引言

1.1. Vue生命周期的具体阶段

1.2. 每个阶段的具体作用和常用场景

1.3. 生命周期钩子函数

​二、代码示例

三、运行效果 


一、引言

Vue生命周期是指Vue组件实例从创建到销毁的整个过程。在这个过程中,组件经历了一系列的阶段,每个阶段都有其特定的生命周期钩子函数,这些钩子函数允许在不同的阶段插入开发人员自定义的代码逻辑。理解Vue生命周期有助于更好地管理组件的状态和行为,特别是在数据管理和DOM渲染方面。

1.1. Vue生命周期的具体阶段

生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁

1. 创建

beforeCreate:在实例创建之前调用,此时还没有调用data和methods中的方法。

created:实例创建后调用,此时已经完成了数据的观测,但是尚未挂载DOM,$el属性尚不可用。

2. 挂载

beforeMount‌:在挂载之前调用,相关的render函数首次被调用,可以在此时对实例进行渲染。

mounted:实例已经挂载到DOM上后调用,此时期已经和DOM进行了关联,可以用$el访问到挂载的DOM元素。

3. 更新

beforeUpdate‌:数据更新时调用,发生在虚拟DOM打补丁之前。

updated‌:数据更新后调用,虚拟DOM已经打补丁之后。

4. 销毁

beforeDestroy‌:实例销毁之前调用。

destroyed‌:实例已销毁后调用。

1.2. 每个阶段的具体作用和常用场景

  • created‌:常用于发起网络请求,因为此时已经完成了数据的观测,但尚未挂载DOM。
  • mounted‌:常用于操作DOM元素,因为此时实例已经挂载到DOM上。
  • updated‌:常用于执行依赖于DOM的操作,因为此时虚拟DOM已经更新。
  • beforeDestroy‌:常用于进行清理工作,如移除事件监听器等,因为实例即将销毁。

1.3. 生命周期钩子函数

Vue生命周期过程中,会自动运行一些函数,被称为【生命周期钩子】→ 让开发者可以在【特定阶段】运行自己的代码。

二、代码示例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><h3>{{ title }}</h3><div><button @click="count--">-</button><span>{{ count }}</span><button @click="count++">+</button></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {count: 100,title: '计数器'},// 1. 创建阶段(准备数据)beforeCreate () {console.log('beforeCreate 响应式数据准备好之前', this.count)},created () {console.log('created 响应式数据准备好之后', this.count)// this.数据名 = 请求回来的数据// 可以开始发送初始化渲染的请求了},// 2. 挂载阶段(渲染模板)beforeMount () {console.log('beforeMount 模版渲染之前', document.querySelector('h3'.innerHTML))},mounted () {console.log('mounted 模板渲染之后', document.querySelector('h3'.innerHTML))// 可以开始操作dom了},// 3. 更新阶段beforeUpdate () {console.log('beforeUpdate 数据改了,视图还没更新', document.querySelector('span').innerHTML)},updated () {console.log('updated 数据改了,视图已经更新', document.querySelector('span').innerHTML)},// 4. 销毁阶段beforeDestroy () {console.log('beforeDestroy销毁前')console.log('清除掉一些Vue以外的资源占用,如定时器、延时器等等')},destroyed () {console.log('destroyed销毁后')}})</script>
</body></html>

三、运行效果 

注:因为销毁阶段涉及到浏览器的关闭,这里为了演示销毁,在浏览器的控制台里通过调用Vue app实例的destroy()方法。

http://www.lryc.cn/news/470960.html

相关文章:

  • 展厅展会客流显示屏的客流统计功能如何实现
  • golang正则表达式的使用及举例
  • Flutter杂学: iOS 上启用自动填充和关联域
  • 接口自动化-框架搭建(Python+request+pytest+allure)
  • [论文阅读]Constrained Decision Transformer for Offline Safe Reinforcement Learning
  • 工具_Nginx
  • web开发Model1
  • ImportError: cannot import name ‘Sequential‘ from ‘keras.models‘
  • python实战(二)——房屋价格回归建模
  • UHF机械高频头的知识和待学习的疑问
  • 深入理解 SQL 中的 WITH AS 语法
  • 同三维T80005JEHA-4K60 4K60超高清HDMI/AV解码器
  • 深信服秋季新品重磅发布:安全GPT4.0数据安全大模型与分布式存储EDS新版本520,助力数字化更简单、更安全
  • Flutter图片控件(七)
  • JavaEE初阶---文件IO总结
  • 10.28Python_pandas_csv
  • 数据处理与可视化:pandas 和 matplotlib 初体验(9/10)
  • 鸿蒙学习总结
  • 如何修改文件创建时间?六个超简单修改方法介绍
  • 【MySQL 保姆级教学】内置函数(9)
  • 华为大咖说丨如何通过反馈机制来不断优化大模型应用?
  • 上海亚商投顾:沪指缩量震荡 风电、传媒股集体走强
  • 三磺酸-Cy3.5-羧酸在水相环境中表现良好,能够提高成像的清晰度和准确性
  • 国标GB28181视频平台EasyGBS国标GB28181软件实现无需插件的视频监控对讲和网页直播
  • mac nwjs程序签名公证(其他mac程序也一样适用)
  • 网络应用技术 实验一:路由器实现不同网络间通信(华为ensp)
  • 使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南
  • 【mysql进阶】5-事务和锁
  • 指增和中性产品的申赎加减仓及资金调拨自动化伪代码思路
  • 【论文分享】居住开放空间如何影响老年人的情感:使用可穿戴传感器的现场实验