vue检测页面手指滑动距离,执行回调函数,使用混入的语法,多个组件都可以使用

mixin.ts

定义滑动距离的变量和检测触摸开始的方法,滑动方法,并导出两个方法

sendTranslateX.value > 250 && sendTranslateY.value < -100是向上滑动,满足距离后执行回调函数func,并在一秒内不再触发,一秒后清空距离并允许再次触发。

typescript 复制代码
// touch----mixins
import { ref } from "vue";
import { useRouter } from "vue-router";
const userEntityMixin = {
	setup() {
		const router = useRouter();
		let sendTranslateX = ref(0);
		let sendTranslateY = ref(0);
		let sendoriginX = 0;
		let sendoriginY = 0;

		const sendTouchStart = event => {
			sendoriginX = event.touches[0].screenX;
			sendoriginY = event.touches[0].screenY;
		};
		let jumpOnce = false;
		const sendTouchMoveEvent = (e, func) => {
			if (sendTranslateX.value > 250 && sendTranslateY.value < -100) {
				if (jumpOnce) {
					setTimeout(() => {
						jumpOnce = false;
						sendTranslateX.value = 0;
						sendTranslateY.value = 0;
					}, 1000);
					return;
				}
				// jumpToPage();
				func && func();
				jumpOnce = true;
				return;
			}

			let afterX = 0;
			let afterY = 0;

			afterX = e.changedTouches[0].screenX;
			afterY = e.changedTouches[0].screenY;
			sendTranslateX.value = afterX - sendoriginX;
			sendTranslateY.value = afterY - sendoriginY;
		};
		return {
			sendTouchStart,
			sendTouchMoveEvent
		};
	}
};
export default userEntityMixin;

使用混入的检测滑动,增加最外层标签的监听

html 复制代码
<div
		class="customer"
		@touchstart="sendTouchStart"
		@touchmove="sendTouchMoveEvent($event, jumpToPage)"
	>
typescript 复制代码
import userEntityMixin from "@/mixins/pageTouches.ts";
const { sendTouchStart, sendTouchMoveEvent } = userEntityMixin.setup();
const jumpToPage = () =>{
	console.log("回调函数");
}
相关推荐
秋沐1 分钟前
Vue3实现打印功能
前端·javascript·vue.js
大霞上仙2 分钟前
一个vue前端的例子(六)如何获取table一行的id
前端·javascript·vue.js
张小瑜6 分钟前
elementUI中el-form 嵌套el-from 如何进行表单校验?
前端·vue.js·elementui
盼盼盼13 分钟前
react Refine 框架在性能优化方面有哪些具体的技术手段?
前端·react.js·性能优化
听潮阁18 分钟前
【卷起来】VUE3.0教程-09-整合Element-plus
前端·javascript·vue.js·spring boot·spring cloud
风清云淡_A21 分钟前
react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot
前端·reactjs
恋猫de小郭26 分钟前
React Native 0.76,New Architecture 将成为默认模式,全新的 RN 来了
javascript·react native·react.js
让开,我要吃人了33 分钟前
HarmonyOS应用开发( Beta5.0)HOS-用户认证服务:面部识别
服务器·前端·华为·移动开发·嵌入式·harmonyos·鸿蒙
小小李程序员35 分钟前
Redis地理数据类型GEO
前端·redis·bootstrap
黑客大佬41 分钟前
安全工具 | 使用Burp Suite的10个小tips
运维·前端·网络·学习·安全·云计算·腾讯云