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

封装长按触发事件的uniapp组件

简单说一下原理

首先介绍三个针对触摸屏设备的事件,分别是:

  1. touchstart:当手指触摸屏幕时触发,即触摸开始的时候;
  2. touchend:当手指离开屏幕时触发,即触摸结束的时候;
  3. touchcancel:当触摸事件被取消时触发,例如手指移出了触摸区域或者系统强制取消了触摸事件。

那么长按事件原理的大致逻辑伪代码就如下;

touchstart:当手指触摸屏幕时触发,即触摸开始的时候
{启动一个定时任务事件在 500 毫秒后执行
}ouchend:当手指离开屏幕时触发,即触摸结束的时候
【并且】
touchcancel:当触摸事件被取消时触发,例如手指移出了触摸区域或者系统强制取消了触摸事件
{ 如果前面的定时任务事件还没触发,那么清空该定时任务
}

你说有点抽象?那先自己看看代码运行两遍研究一下

代码直接用

直接上代码,马上使用:

<template><view@touchstart="handleTouchStart"@touchend="handleTouchEnd"@touchcancel="handleTouchCancel"><slot></slot> <!-- Allows content to be inserted --></view>
</template><script setup lang="ts">
import { ref, onUnmounted, inject,defineProps } from 'vue'const props = defineProps({onLongPress:{type: Function,required: true}
})const timer = ref<number | null>(null);const handleTouchStart = () => {// Clear existing timer if it existsif (timer.value) clearTimeout(timer.value);// Set a new timertimer.value = setTimeout(() => {console.log(props)props.onLongPress();}, 500); // Trigger after 500 ms
};const clearTimer = () => {// Clear the timer when touch ends or is cancelledif (timer.value) {clearTimeout(timer.value);timer.value = null;}
};const handleTouchEnd = () => {clearTimer();
};const handleTouchCancel = () => {clearTimer();
};onUnmounted(() => {// Ensure no timers are left runningclearTimer();
});
</script>

父组件使用调用示例:

<k-long-press-view :on-long-press="handleLongPress"><view style="min-height: 50rpx;">长按触发</view>
</k-long-press-view><script setup lang="ts">
function handleLongPress() {console.log('长按触发')
}
</script>

相关文章:

封装长按触发事件的uniapp组件

简单说一下原理 首先介绍三个针对触摸屏设备的事件&#xff0c;分别是&#xff1a; touchstart&#xff1a;当手指触摸屏幕时触发&#xff0c;即触摸开始的时候&#xff1b;touchend&#xff1a;当手指离开屏幕时触发&#xff0c;即触摸结束的时候&#xff1b;touchcancel&am…...

Docker 安装的MySQL迁移数据库

1. 导出数据库 docker ps :查看数据库对应的 CONTAINER ID docker exec -it id /bin/bash : 进入到mysql的docker实例中 cd /usr/bin : 进入到bin目录 mysqldump -u root -p123456 study > /root/study_backup0509.sql :使用mysqldump备份库&#xff0c;注意密码与-p之间…...

算法训练Day28 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II class Solution { public:int maxProfit(vector<int>& prices) {vector<int> dp(2,0);dp[0] -prices[0];for(int i1; i<prices.size(); i){dp[0] max(dp[0], dp[1]-prices[i]);dp[1] max(dp[1], prices[i]dp[0]);}return dp[1]…...

Linux(openEuler、CentOS8)基于chrony企业内网NTP服务器搭建实验

一、知识点 chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的 chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间&#xff0c;默认的配置文件是 /etc/chrony.conf chronyc 通过 323 端口与 chronyd 交互&#xff0c;可监控 chronyd 的性能并在运…...

前端开发框架Vue

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Vue概述 Vue.js&#xff08;简称Vue&#xff09;是由尤雨溪&#xff08;Evan You&#xff09;创建并维护的一款开源前端开发框架。Vue以其轻量级、易上手和高度灵活的特点&…...

Vue2中引入ElementUI

Vue中引入ElementUI 目录 Vue中引入ElementUI安装 全库导入main.py使用 仅引入样式文件main.py使用 安装 官方文档 npm i element-ui -S全库导入 main.py import ElementUI from element-ui;Vue.use(ElementUI)使用 <template> <div class"main">&l…...

华中科技大学雷达站部署

一&#xff1a;项目地址 GitHub - HUSTLYRM/HUST_Radar_2023: 华中科技大学狼牙战队 RoboMaster 2023赛季 雷达站 二&#xff1a;安装依赖 2.1创建虚拟环境 首先是程序是基于python3.8完成&#xff0c;所以创建虚拟环境的时候&#xff0c;选择3.8的虚拟环境 conda create -…...

小程序引入 Vant Weapp 极简教程

一切以 Vant Weapp 官方文档 为准 Vant Weapp 官方文档 - 快速入手 1. 安装nodejs 前往官网下载安装即可 nodejs官网 安装好后 在命令行&#xff08;winr&#xff0c;输入cmd&#xff09;输入 node -v若显示版本信息&#xff0c;即为安装成功 2. 在 小程序根目录 命令行/终端…...

labview技术交流-将时间字符串转换成时间格式

应用场景 我们在数据库中设计了datetime类型的字段&#xff0c;比如字段名就叫“保存时间”&#xff0c;当我们使用labview将表中数据读取出来后datetime类型的数据是以字符串的格式显示的。而我们想计算两条数据“保存时间”的间隔时间时&#xff0c;用字符串类型自然是没法计…...

算法提高之迷宫问题

算法提高之迷宫问题 核心思想&#xff1a;最短路问题 从(n-1,n-1)开始bfs 往前走一个就存入pre数组 之后再遍历pre数组输出 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 1010,M N*N;#define x first#def…...

泛微E9开发 通过点击按钮来复制选择的明细行

泛微E9开发 通过点击按钮来复制选择的明细行 复制明细行功能背景展示效果实现方法 复制明细行 功能背景 用户可以通过“复制明细”按钮来实现新增选择的明细行&#xff0c;并且新增明细行的数据跟选择的数据完全一样&#xff0c;具体操作如下图所示&#xff1a; 手动新增明细…...

sqlalchemy 分表实现方案

1.需求及场景概述 现有系统中因历史数据量过大&#xff0c;产生了将历史数据进行按月存储的要求&#xff0c;系统和数据库交互使用的是sqlalchemy&#xff0c;假设系统的原来的历史记录表&#xff08;record&#xff09;如下&#xff1a; 为了将历史数据按月分表存储&#xff0…...

QML进阶(十五) QML各种标准元素的用法

文章目录 文本图像控件TextTextInputTextFieldTextEditTextAreaImage按钮控件ButtonRadioButtonCheckBoxComboBox进度控制控件ProgressBarSlider...

【工具使用】快速实现Makefile模板的方法

一&#xff0c;简介 我们在使用gcc编译程序时&#xff0c;常常需要自己实现Makefile&#xff0c;那么如何快速的实现Makefile呢&#xff1f;这里把一些基本的操作整理成模板&#xff0c;供参考。 二&#xff0c;模板介绍 功能包含基本功能编译exe&#xff08;包括调用其他算…...

Linux-信号执行

1. 信号什么时候被处理 当进程从内核态返回到用户态的时候&#xff0c;进行信号的检测和处理 什么内核态&#xff0c;什么又是用户态呢&#xff1f; 当进程在CPU上运行时&#xff0c;内核态&#xff1a;允许进程访问操作系统的代码和数据&#xff0c;用户态&#xff1a;进程只…...

在线听歌播放器 梨花带雨网页音乐播放器 网页音乐在线听 源码

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 下 载 地 址 &#xff1a; runruncode.com/php/19749.html 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容&#xff1a;修复播放器接口问题&am…...

免费生成证件照

分享分享&#xff0c;免费福利&#xff0c;欢迎大家来体验&#xff01;&#xff01;&#xff01; 不知道你是不是会时不时有使用证件照需求&#xff0c;这一个小程序&#xff0c;可以生成常见尺寸的证件照&#xff0c;全程免费&#xff0c;有需要的可以动动小手&#xff0c;体…...

深入探索数据链路层:网络通信的基石

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统❤ 前言 在网络通信的宏伟世界中&#xff0c;数据链路层扮演着至关重要的角色。它位于物理层和网络层之间&#xff0c;不仅直接…...

STM32使用L9110驱动电机自制小风扇

1.1 介绍&#xff1a; 该电机控制模块采用L9110电机控制芯片。该芯片具有两个TTL/CMOS兼容输入端子&#xff0c;并具有抗干扰特性&#xff1a;具有高电流驱动能力&#xff0c;两个输出端子可直接驱动直流电机&#xff0c;每个输出端口可提供750800mA动态电流&#xff0c;其峰值…...

C语言——队列的实现

队列按照先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09;的原则管理数据。这意味着最先进入队列的元素会被最先移出&#xff0c;类似于排队等候服务的情况。队列通常有两个主要操作&#xff1a;入队&#xff08;enqueue&#xff09;&#xff0c;将元素添加…...

QLVideo终极指南:三步让Mac视频预览功能全面升级

QLVideo终极指南&#xff1a;三步让Mac视频预览功能全面升级 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcode.com…...

ROS小车仿真进阶:手把手教你用URDF和Xacro为阿克曼转向车‘造轮子’

ROS阿克曼转向车仿真实战&#xff1a;从URDF建模到Gazebo调试全解析 当你在Gazebo中第一次看到自己搭建的阿克曼转向车完美执行转弯指令时&#xff0c;那种成就感堪比看着孩子学会骑自行车。作为ROS开发者&#xff0c;掌握URDF/Xacro建模技术就像获得了一把打开机器人世界的万能…...

终极指南:5分钟为群晖Audio Station添加QQ音乐歌词插件

终极指南&#xff1a;5分钟为群晖Audio Station添加QQ音乐歌词插件 【免费下载链接】qq_music_aum Synology LRC Plugin. 群晖 Audio Station 歌词插件&#xff0c;歌词来自QQ音乐。 项目地址: https://gitcode.com/gh_mirrors/qq/qq_music_aum 还在为群晖Audio Station…...

深入解析C++菱形继承:虚基表的内存布局与优化策略

1. 菱形继承的本质问题 我第一次遇到菱形继承问题时&#xff0c;正在开发一个教育管理系统。当时需要设计Assistant类继承Student和Teacher&#xff0c;结果发现这两个父类都有从Person继承的_age成员。这导致每个Assistant对象里存了两份_age——这就是典型的数据冗余问题。 …...

VR视频转换:让3D内容在普通设备焕发新生的开源方案

VR视频转换&#xff1a;让3D内容在普通设备焕发新生的开源方案 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirro…...

钉钉H5应用PDF预览避坑指南:为什么iframe直接跳转下载页?

钉钉H5应用PDF预览技术解析&#xff1a;从安全策略到实战解决方案 每次在钉钉H5应用中尝试用iframe嵌套PDF时&#xff0c;那个突如其来的下载对话框总让人措手不及。这背后隐藏的不仅是技术限制&#xff0c;更是一场安全与用户体验的博弈。作为企业内部应用开发者&#xff0c;我…...

实战演练:基于Spring Boot的个人博客系统,用快马AI一键生成完整后端代码

最近在尝试搭建一个个人博客系统&#xff0c;正好用Spring Boot练练手。作为一个Java开发者&#xff0c;我发现用InsCode(快马)平台可以快速生成完整的后端代码&#xff0c;省去了很多重复劳动。下面分享下我的实战经验&#xff1a; 项目初始化 首先明确需求&#xff0c;博客系…...

2026年网文作者生存指南:实测7款AI码字工具,解决“吃设定”与“AI味”的终极防坑指南

写了十二年网文&#xff0c;从早期的起点玄幻、贴吧同人&#xff0c;一路熬到现在番茄的免费飞读模式&#xff0c;算是把网文圈的潮起潮落看了个遍。 最近这两年&#xff0c;个人作者真的很难受。很多工作室直接用大模型批量扫榜&#xff0c;搞得卷字数已经没意义了&#xff0c…...

如何快速搭建Windows syslog服务器:开源日志监控终极指南

如何快速搭建Windows syslog服务器&#xff1a;开源日志监控终极指南 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 在Windows环境下高效监控Unix/Linux系统和网…...

python-flask-djangol框架的减肥健身养生人士饮食营养管理系统

目录 技术选型与框架搭建核心功能模块设计数据模型设计示例&#xff08;Django ORM&#xff09;算法实现要点部署与扩展 项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 技术选型与框架搭建 Python Flask/Django框架均适合开发…...