Vue 3:玩一下web前端技术(七)

news2024/11/18 7:52:40

前言

本章内容为VUE生命周期与相关技术讨论。

上一篇文章地址:

Vue 3:玩一下web前端技术(六)_Lion King的博客-CSDN博客

下一篇文章地址:

Vue 3:玩一下web前端技术(八)_Lion King的博客-CSDN博客

一、生命周期

1、通过钩子函数了解生命周期

基于上一章节的代码,我们添加生命周期钩子函数,修改App.vue文件如下:


<template>
  <div>
    <ul>
      <li v-for="item in list" :key="item.id">
        <span>{{ item.name }}</span>
        <span>{{ item.age }}</span>
      </li>
    </ul>
  </div>
</template>

<script>
import './mock/apiMock'
import axios from 'axios'

export default {
  data() {
    return {
      // list:[{"id":1, "name":"王婆", "age":100}],
      list:[],
    }
  },
  methods: {
  fetchData() {
    axios.get('/apidata/list')
      .then(response => {
        this.list=response.data.list
        console.log(this.list)
      })
      .catch(error => {
        console.error(error)
      })
  }},

  beforeCreate() {
  console.log('beforeCreate');
  this.fetchData();
},
created() {
  console.log('created');
},
beforeMount() {
  console.log('beforeMount');
},
mounted() {
  console.log('mounted');
},
beforeUpdate() {
  console.log('beforeUpdate');
},
updated() {
  console.log('updated');
},
beforeUnmount() {
  console.log('beforeUnmount');
},
Unmount() {
  console.log('Unmount');
},


}

</script>

<style>

</style>

在这个代码中,我们将  this.fetchData();依次放到这8个阶段中,并看看他们的效果:

(1)放到 beforeCreate:

如下报错, 表明在`beforeCreate()`钩子中调用`fetchData()`是不正确的,因为此时组件实例还没有被创建,无法调用组件的方法。


(2)放到created:

虽然日志在created打印,但实际到了mounted完成之后才打印,这是为什么呢?这可能是在Vue组件中,created钩子函数是在Vue实例创建后立即调用的。而mounted钩子函数则是在Vue实例挂载到DOM后调用的。如下图,打印this.fetchData()日志是在mounted周期执行完之后才执行的,这是因为mounted钩子函数是在DOM挂载之后调用的,而fetchData函数可能包含了DOM操作或者涉及到异步操作。


(3)放到beforeMount:

 同(2)。


(4)放到mounted:

能够正确调用 ,说明就该放着这个周期下面。


(5)放到beforeUpdate:

直接不执行,如下所示。


(6)updated:

 同(5)


(7)beforeUnmount:

同(5)


(8)Unmount:

同(5)

二、相关技术讨论

1、组合式API与选项式API

官方说明:简介 | Vue.js

总结一句话,选项式API是基于组合式API实现的,提供接口的风格不一样而已。

2、什么是VUE生命周期?

官方说明:生命周期钩子 | Vue.js

如下图,是生命周期钩子所在位置由箭头标志。

以选项式API为例,Vue的生命周期钩子函数主要包括以下8个阶段(不止8个函数,详见官方说明:生命周期选项 | Vue.js):

(1)beforeCreate:组件实例刚被创建,但data和methods还未被初始化。

(2)created:组件实例已经创建完成,data和methods已经初始化完成。可以进行一些数据的初始化工作。

(3)beforeMount:在组件挂载到DOM之前被调用。此时template编译成了render函数。

(4)mounted:组件挂载到DOM之后调用。可以进行DOM操作等。

(5)beforeUpdate:在组件更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。

(6)updated:组件更新完成后调用。可以进行DOM操作等。
(7)beforeUnmount:在组件实例销毁之前调用。可以进行一些清理工作,比如取消定时器、取消事件监听等。
(8)unmounted:组件实例销毁后调用。

这些生命周期钩子函数可以在Vue组件中使用,可以在钩子函数中执行特定的代码逻辑,帮助我们在不同的阶段处理数据或执行操作。

3、生命周期选项与生命周期钩子

在Vue中,生命周期选项是基于生命周期钩子的封装。官方在描述生命周期时,直接以选项式API中的生命周期选项对应的钩子函数来直接表述,而不是以组合式API的生命周期钩子的钩子函数来表述,这也间接表明了生命周期钩子更为底层。不过,这样的表述方式看起来有些混乱,以至于不太能理解生命周期钩子与生命周期选项中的钩子函数是否是一样的东西。经过前面的分析,我们得出结论:生命周期选项与生命周期钩子只是不同的API风格,选项中的钩子函数是对生命周期钩子函数的封装。

4、对专业术语DOM的理解

DOM (Document Object Model) 是浏览器中用于表示和操作 HTML、XML 和 XHTML 文档的编程接口。它将文档解析为一个由节点和对象(包括元素、属性、文本等)组成的树状结构,并提供了一组方法和属性来访问、修改和操作这个树状结构。

DOM 的树状结构由节点(Node)和关系(Relationship)组成。节点代表文档中的元素、属性、文本等,可以通过节点之间的关系来访问和操作它们,如父子节点、兄弟节点等。

DOM 提供了一些常用的方法和属性来处理文档,例如:
- getElementById():通过元素的 id 属性获取对应的元素节点。
- getElementsByTagName():通过元素的标签名获取一组元素节点。
- innerHTML:获取或设置元素节点的内容。
- appendChild():在一个元素节点的末尾插入一个新的子节点。

通过使用 DOM,我们可以动态地操作文档内容,例如创建新的元素、删除或移动已有的元素、修改元素的样式或属性等。这使得我们可以使用 JavaScript 或其他编程语言来操控网页的结构和样式,实现动态的交互效果和用户体验。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9、测试Service组件和使用模拟组件辅助测试

测试Service组件和使用模拟组件辅助测试 测试Service组件 测试Service组件无需启动Web服务器&#xff0c;所以使用SpringBootTest(webEnvironment WebEnvironment.NONE)修饰测试用例类即可 &#xff08;用NONE表示不启动Web服务器&#xff09;。 Service组件其实就是一个普…

【002 操作系统】进程的状态及状态转换图?

一、进程的状态 1. 创建状态 2. 就绪状态 3. 运行状态 4. 阻塞状态 5. 终止状态 图源&#xff1a;进程、线程基础知识全家桶&#xff0c;30 张图一套带走_Linux_小林coding_InfoQ写作社区 NULL -> 创建状态&#xff1a;一个新进程被创建时的第一个状态&#xff1b; 创建状态…

python+django+mysql项目实践一(环境准备)

python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 创建Pycharm项目 安装Django 在pycharm文件—设置进行安装 新建Django项目 注意项目创建目录 项目默认目录文件说明: __init__.py asgi.py 【异步接受网络…

Qt 5. QSerialPort串口收发

1. 代码 //ex2.cpp #include "ex2.h" #include "ui_ex2.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo>int static cnt 0;Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi…

Win11的dev通道更新Build23493版本后启用Windows Copilot的解决办法

博客嘛&#xff0c;多偷懒少打字&#xff0c;先上图&#xff1a; 首先是微软宣布了对dev通道版本推送了Windows Copilot for Windows 11&#xff0c;但是相信像我这样的小白想体验又对win一窍不通的人应该也有不少&#xff0c;经历了一次重装&#xff0c;五次版本的回退再更新后…

opencv rtsp 硬件解码

讨论使用opencv的reader 硬件解码的方案有太多种&#xff0c;如果使用ffmpeg硬件解码是最方便的&#xff0c;不方便的是把解码过后的GPU 拉到 CPU 上&#xff0c;再使用opencv的Mat 从cpu 上上载到gpu上&#xff0c;是不是多了两个过程&#xff0c;应该是直接从GPU mat 直接去…

从Bean的生命周期分析Dubbo的源码

写作目的 Dubbo作为RPC中的经典落地实践&#xff0c;作为阿里内部目前还是大规模使用的基础框架&#xff0c;作为CRUD的底层。无论从什么角度来看简单的阅读一下Dubbo的源码还是有必要的。 前提&#xff1a;要了解Bean的生命周期 源码下载 gitee源码下载 源码分析 开启Dub…

《MySQL 实战 45 讲》课程学习笔记(四)

深入浅出索引 索引的出现其实就是为了提高数据查询的效率&#xff0c;就像书的目录一样。 索引的常见模型 哈希表 哈希表是一种以键 - 值&#xff08;key-value&#xff09;存储数据的结构&#xff0c;我们只要输入待查找的值即 key&#xff0c;就可以找到其对应的值即 Val…

时序分析:曲线分解

以下仅为博主个人观点&#xff0c;如有错误欢迎批评指正。 前言后记都挺重要建议还是看一下吧。 文章目录 前言经验模态分解EMDEEMDCEEMDAN 变分模态分解VMD 奇异谱分析SSA 后记 前言 本篇文章将会介绍常用曲线分解方法(经验模态分解及其变种&#xff0c;变分模态分解&#x…

集团企业网站建设开发

为集团提供一个互联网上的形象宣传和信息发布、收集的重要平台 利用最新的互联网动态数据库交互能力&#xff0c;建立一套在互联网上具有领先地位的集团网站&#xff0c;将集团和子公司网站做到有机的统一。集团网站不但要把集团的企业、产品等相关信息展示给我们的客户、合作…

RabbitMQ 教程 | 第2章 RabbitMQ 入门

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

1,复杂度和简单排序算法【p2-p3】

复杂度和简单排序算法 1&#xff0c;时间复杂度1.1选择排序1.2冒泡排序1.3异或运算1.3.1性质&#xff1a;1.3.2案例例1例2 1.4插入排序1.5二分法1.5.1在一个有序数组中&#xff0c;找某个数是否存在1.5.2在一个有序数组中&#xff0c;找>某个数最左侧的位置1.5.3局部最小值问…

linux系统编程重点复习--守护进程和线程

复习目标 说出守护进程的特点独立完成守护进程的创建独立实现多个线程的创建独立实现线程的退出和资源回收理解线程同步的思想 1 守护进程 1.1 守护进程介绍 Daemon(精灵)进程&#xff0c;是Linux中的后台服务进程&#xff0c;通常独立于控制终端并且周期性地执行某种任务或…

通向架构师的道路之Apache整合Tomcat

一、先从J2EE工程的通用架构说起 这是一个通用的Web即B/S工程的架构&#xff0c;它由&#xff1a; Web Server App Server DB Server 三大部分组成&#xff0c;其中&#xff1a; Web Server 置于企业防火墙外&#xff0c;这个防火墙&#xff0c;大家可以认为是…

hugging face下载数据集

开始直接执行这个&#xff0c;下载下来的图片打不开 git clone https://huggingface.co/datasets/diffusers/dog-example 解决办法&#xff1a; 安装git lfs 1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash 2. sudo apt…

论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series

2021 NIPS 原来的时间序列预测任务是根据预测论文提出用一阶自回归误差预测 一阶差分&#xff0c;类似于ResNet的残差思路&#xff1f;记为pred&#xff0c;最终的预测结果

zore-shot,迁移学习和多模态学习

1.zore-shot 定义&#xff1a;在ZSL中&#xff0c;某一类别在训练样本中未出现&#xff0c;但是我们知道这个类别的特征&#xff0c;然后通过语料知识库&#xff0c;便可以将这个类别识别出来。概括来说&#xff0c;就是已知描述&#xff0c;对未知类别&#xff08;未在训练集中…

Qsys介绍

文章目录 前言一、为什么需要Qsys1、简化了系统的设计流程2、Qsys涉及的技术 二、Qsys真身1、一种系统集成工具2、何为Nios II1、内核架构2、Nios II选型 三、Qsys设计涉及到的软件&工具四、总结五、参考资料 前言 Qsys是Altera下的一个系统集成工具&#xff0c;可用于搭建…

代码随想录算法训练营第三十天 | 单调栈系列复习

单调栈系列复习 每日温度未看解答自己编写的青春版重点题解的代码日后再次复习重新写 下一个更大元素 I未看解答自己编写的青春版重点题解的代码日后再次复习重新写 下一个更大元素II未看解答自己编写的青春版重点题解的代码日后再次复习重新写 接雨水未看解答自己编写的青春版…

idea模块的pom.xml被划横线,不识别的解决办法

目录 问题&#xff1a; 解决办法&#xff1a; 1.打开设置 2. 取消勾选 3.点击确认 4.解决 问题提出&#xff1a; 写shi山的过程中&#xff0c;给模块取错名字了&#xff0c;改名的时候不知道点到了什么&#xff0c;一个模块的pom.xml变成灰色了&#xff0…