vue3 学习笔记13 -- 生命周期和防抖节流

vue3 学习笔记13 – 生命周期和防抖节流

生命周期

  • 创建周期(Composition API)
    • setup(): 这不是生命周期钩子,但它是组合API的入口点,用于执行任何启动逻辑。
  • 更新周期
    • onBeforeMount(): 在组件挂载之前调用,此时虚拟 DOM 已经准备好,但尚未渲染到页面上

    • onMounted(): 在组件挂载后调用,此时组件已经被添加到页面中,可以执行 DOM 操作或异步请求等操作。

    • onBeforeUpdate(): 在组件更新之前调用,可以用于准备更新前的数据状态。

    • onUpdated(): 在组件更新完成后调用,可以执行一些 DOM 操作。

  • 卸载周期
    • onBeforeUnmount(): 在组件卸载之前调用,可以用来清理定时器或取消事件监听器等

    • onUnmounted(): 在组件卸载后调用,执行一些清理工作。

  • 错误处理周期
    • onErrorCaptured(): 在子组件抛出未捕获异常时调用,可以用来收集错误信息或者进行日志记录
         onErrorCaptured((error, vm, info) => {console.error('Captured error:', error);});
      

防抖和节流

  • utils/index.ts文件下封装使用
export function useDebounce(callback: Function, delay: number) {let timer: NodeJS.Timeout | null = null;return function() {if (timer) {clearTimeout(timer);}timer = setTimeout(() => {callback.apply(this, arguments);}, delay);};
}export function useThrottle(callback: Function, delay: number) {let throttling = false;return function() {if (!throttling) {throttling = true;setTimeout(() => {callback.apply(this, arguments);throttling = false;}, delay);}};
}
防抖 (Debounce)

防抖函数用于延迟执行一个函数,直到一个连续动作的最后一次发生后,一段时间内没有新的动作产生。

  • 组件中使用
<template><button @click="handleClick">Click me</button><p>Count: {{ count }}</p>
</template><script setup lang="ts">
import { useDebounce } from '../utils/debounce';const count = ref(0);const debouncedIncrement = useDebounce(() => {count.value++;
}, 500); // 500ms 防抖const handleClick = () => {debouncedIncrement();
};
</script>
节流 (Throttle)

节流函数用于减少函数的调用频率,确保在一定时间内只执行一次。

  • 组件中使用
<template><button @click="handleClick">Click me</button><p>Count: {{ count }}</p>
</template><script setup lang="ts">
import { ref } from 'vue';
import { useThrottle } from '../utils/throttle';const count = ref(0);const throttledIncrement = useThrottle(() => {count.value++;
}, 500); // 每500ms节流- 每500ms执行一次const handleClick = () => {throttledIncrement();
};
</script>

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

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

相关文章

音视频开发入门教程(1)如何安装FFmpeg?共210节

安装FFmpeg的具体步骤会根据你使用的操作系统而有所不同。以下是Windows和Linux系统上安装FFmpeg的基本步骤&#xff1a; Windows系统 下载FFmpeg安装包&#xff1a; 访问FFmpeg的官方网站&#xff1a;FFmpeg。点击页面上方的“Download”按钮。在下载页面&#xff0c;找到适…

Jenkins安装nodeJs环境

首先插件市场安装nodeJS插件&#xff0c;我这里已经安装了&#xff0c;没安装的话在 Available plugins 中搜索安装 安装完成后需要下载需要的nodejs版本 新增完成就可以在构建的时候选择当前版本号了

从基础知识到应用实例,一站式掌握 Python 正则表达式

前言 大家好&#xff0c;我是阔升。今天&#xff0c;我要和大家聊聊 Python 中的正则表达式。正则表达式可谓是编程界的“瑞士军刀”&#xff0c;能用来处理各种复杂的字符串操作。本文将通过几个有趣的例子&#xff0c;带你学习正则表达式。 正则表达式基础 在 Python 中&a…

JMeter接口测试之文件上传(参数提取与传递)

参考文档&#xff1a; Jmeter接口测试-文件上传&#xff08;全网最详细的教程&#xff09;_jmeter 文件上传-CSDN博客 1、首先通过fiddler抓取文件上传接口&#xff0c;在Raw的tab页中查看默认请求头以及请求参数 如图所示 2、在jmeter中导入抓取的接口&#xff0c;首先需要配…

新书速览|深入理解Hive:从基础到高阶:视频教学版

《深入理解Hive&#xff1a;从基础到高阶&#xff1a;视频教学版》 本书内容 《深入理解Hive:从基础到高阶:视频教学版》采用“理论实战”的形式编写&#xff0c;通过大量的实例&#xff0c;结合作者多年一线开发实战经验&#xff0c;全面地介绍Hive的使用方法。《深入理解Hiv…

AI算法18-最小角回归算法Least Angle Regression | LARS

​​​ 最小角回归算法简介 最小角回归&#xff08;Least Angle Regression, LAR&#xff09;是一种用于回归分析的统计方法&#xff0c;它在某些方面类似于最小二乘回归&#xff0c;但提供了一些额外的优点。最小角回归由Bradley Efron等人提出&#xff0c;主要用于处理具有…

【Linux】安装PHP扩展-redis

说明 本文档是在centos7.6的环境下&#xff0c;安装PHP7.4之后&#xff0c;安装对应的PHP扩展包redis。 一、下载redis扩展 pecl官方地址:PECL :: The PHP Extension Community Library 下载的版本是&#xff1a;redis-5.3.7.tgz 二、安装redis扩展 1.上传 redis 压缩包到…

基于STM32设计的物联网智能鱼缸(微信小程序)(187)

基于STM32设计的物联网智能鱼缸(微信小程序)(187) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的…

Amazon Bedrock 常用场景及 Python 实现

Amazon Bedrock 是 AWS 提供的一项全托管服务,它为开发者提供了一系列高性能的基础模型(Foundation Models,FMs)。通过单一 API,开发者可以访问来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的模型。本文将介绍 Amazon Bedrock 的几个…

深入异步JavaScript:掌握Promises与async/await

引言 异步编程允许JavaScript代码在等待某些耗时操作&#xff08;如网络请求、文件读写等&#xff09;完成时&#xff0c;继续执行其他任务&#xff0c;而不是阻塞整个程序的运行。这种编程模式极大地提高了应用的响应速度和效率。 JavaScript中的异步编程基础 同步与异步代…

【嵌入式DIY实例-ESP8266篇】-LCD ST7789显示DS1307 RTC时间数据

LCD ST7789显示DS1307 RTC时间数据 文章目录 LCD ST7789显示DS1307 RTC时间数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS1307 RTC 集成电路构建简单的实时时钟和日历 (RTCC),其中时间和日期打印在 ST7789 TFT 显示模块上。 ST7789 TFT 模块包…

MySQL面试题-重难点

mysql中有哪些锁&#xff1f;举出所有例子&#xff0c;各个锁的作用是什么&#xff1f;区别是什么&#xff1f; 共享锁&#xff1a;也叫读锁&#xff0c;简称S锁&#xff0c;在事务要读取一条记录时&#xff0c;先获取该记录的S锁&#xff0c;别的事务也可以继续获取该记录的S…

[Linux CMD] 文件编辑 nano (待更新)

【Linux】&#xff1a;文本编辑与输出命令 轻松上手nano、echo和cat_linux终端内容输出文本-CSDN博客

【海外云手机】静态住宅IP集成解决方案

航海大背景下&#xff0c;企业和个人用户对于网络隐私、稳定性以及跨国业务的需求日益增加。静态住宅IP与海外云手机的结合&#xff0c;提供了一种创新的集成解决方案&#xff0c;能够有效应对这些需求。 本篇文章分为三个部分&#xff1b;静态住宅优势、云手机优势、集成解决…

OpenCV一个简单的摄像头调用与关闭

在使用OpenCV&#xff08;Open Source Computer Vision Library&#xff09;进行摄像头调用与关闭时&#xff0c;通常使用cv2.VideoCapture()函数来调用摄像头&#xff0c;并通过适当的方式关闭它。 调用摄像头 首先&#xff0c;需要导入OpenCV库&#xff08;通常简写为cv2&a…

gemini-pro-vision 看图说话

一、安装 pip install -U langchain-google-vertexai 二、设置访问权限 申请服务账号json格式key 三、完整代码 import gradio as gr import json import base64 from pathlib import Path import os import time import requests from fastapi import FastAPI, UploadFile,…

android的跨进程通讯方式

android的跨进程通讯方式 在Android中&#xff0c;跨进程通信&#xff08;IPC&#xff09;可以通过多种方式实现&#xff0c;以下是几种常见的方法&#xff1a; 使用Intent&#xff1a;通过Intent传递数据&#xff0c;启动另一个应用的Activity或Service。 使用AIDL&#…

无缝集成的艺术:在Conda中启用pip与Conda的互操作性

无缝集成的艺术&#xff1a;在Conda中启用pip与Conda的互操作性 引言 Conda是一个强大的包管理器和环境管理器&#xff0c;广泛用于Python和其他科学计算语言。它不仅能够管理包的依赖关系&#xff0c;还能创建和维护独立的开发环境。然而&#xff0c;在某些情况下&#xff0…

K8S私有云裸金属服务器负载均衡器OpenELB——筑梦之路

OpenELB介绍 OpenELB 是一个专为裸机 Kubernetes 集群设计的开源负载均衡器实现。 在云服务环境中的 Kubernetes 集群里&#xff0c;通常可以用云服务提供商提供的负载均衡服务来暴露 Service&#xff0c;但是在本地没办法这样操作。而 OpenELB 可以让用户在裸金属服务器、边缘…

RocketMQ~架构与工作流程了解

简介 RocketMQ 具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统&#xff0c;由阿里巴巴团队开发&#xff0c;在 2016 年底贡献给 Apache&#xff0c;成为了 Apache 的一个顶级项目。 在阿里内部&#xff0c;RocketMQ 很好地服务了集…