ReactJS - TouchEvent 处理程序
触摸事件对于增强用户体验非常重要,尤其是对于智能手机和平板电脑等触摸敏感设备。我们将研究几种触摸事件、它们的类型以及如何在 React 应用程序中处理它们。
触摸事件是 Web 开发 UI 事件大家族的一部分。这些事件让我们能够记录和响应用户活动,如点击、滑动和捏合。
语法
<div
onTouchStart={e => console.log('onTouchStart')}
onTouchMove={e => console.log('onTouchMove')}
onTouchEnd={e => console.log('onTouchEnd')}
onTouchCancel={e => console.log('onTouchCancel')}
/>
参数
e − 这是一个 React 事件对象,我们可以将其与 TouchEvent 属性一起使用。
TouchEvent 的类型
有四种主要的触摸事件需要注意 −
| Sr.No | 类型 &描述 |
|---|---|
| 1 | touchstart 当用户将手指放在触摸表面上时,将触发此事件。 |
| 2 | touchend 当用户将手指从表面上移开或触摸点离开表面边缘时,将发生 touchend 事件。 |
| 3 | touchmove 当用户将手指移过表面时,将发生这种情况。它会不断监控接触点的移动。 |
| 4 | touchcancel 当触摸点受到某种干扰时,将发送此消息。 |
TouchEvent 的属性
有一些触摸事件属性需要注意 −
| Sr.No | 属性 &描述 |
|---|---|
| 1 | altKey 显示事件发生时是否按下了 Alt 键。 |
| 2 | ctrlKey 指示在事件期间是否单击了 Ctrl 键。 |
| 3 | changedTouches 显示已更改的触摸的 Touch 对象列表。 |
| 4 | getModifierState(key) 返回布尔值的函数,显示修饰键(例如 Shift、Alt 或 Ctrl)是否按下。 |
| 5 | metaKey 显示事件期间是否按下了 Meta 键。 |
| 6 | shiftKey 指示事件期间是否单击了 Shift 键。 |
| 7 | touches Touch 对象列表,表示触摸表面上的所有当前触摸。 |
| 8 | targetTouches Touch 对象列表,显示目标上的触摸元素。 |
| 9 | detail 显示一个整数值,用于获取更多事件特定信息。 |
| 10 | view 引用生成事件的 Window 对象。 |
示例
示例 − 简单触摸应用
我们将使用以下代码创建一个简单的 React 应用来显示 TouchEvent 处理程序。这是一个在控制台中显示触摸事件的小型 React 应用 −
import React from "react";
class App extends React.Component {
render() {
return (
<div
onTouchStart={(e) => console.log("onTouchStart")}
onTouchMove={(e) => console.log("onTouchMove")}
onTouchEnd={(e) => console.log("onTouchEnd")}
onTouchCancel={(e) => console.log("onTouchCancel")}
style={{
width: "200px",
height: "200px",
backgroundColor: "lightblue",
textAlign: "center",
lineHeight: "200px"
}}
>
TouchEvent
</div>
);
}
}
export default App;
输出
此代码生成 App React 组件。当发生四个触摸事件(touchstart、touchmove、touchend 和 touchcancel)之一时,消息将记录在控制台中。该组件还提供了一个可点击的 <div> 元素,我们可以在支持触摸的设备上与其交互。
示例 − 长按应用
给定的 React 应用名为"LongPressApp",旨在检测支持触摸的设备上长按。该应用有一个浅蓝色背景的 div 元素,其宽度和高度均为 200 像素。当我们触摸并按住该应用至少 1000 毫秒时,它会向控制台记录一条消息,指出"检测到长按"。
import React from 'react';
class App extends React.Component {
handleTouchStart = () => {
this.longPressTimer = setTimeout(() => {
console.log('Long press detected');
}, 1000); // 调整长按持续时间阈值
};
handleTouchEnd = () => {
clearTimeout(this.longPressTimer);
};
render() {
return (
<div
onTouchStart={this.handleTouchStart}
onTouchEnd={this.handleTouchEnd}
style={{
width: '200px',
height: '200px',
backgroundColor: 'lightblue',
textAlign: 'center',
lineHeight: '200px',
}}
>
LongPressApp
</div>
);
}
}
export default App;
输出
在浏览器中打开应用。触摸应用并保持触摸至少 1000 毫秒。在指定的持续时间后,我们将能够看到记录到浏览器控制台的消息"检测到长按"。
示例 − 捏合缩放应用
捏合缩放 React 应用旨在检测捏合手势的开始和结束,通常用于在支持触摸的设备上缩放。该应用有一个带有浅蓝色背景的 div 元素,宽度和高度均为 200 像素。当用户开始捏合手势时,它会将消息"Pinch started(捏合已开始)"记录到控制台。同样,当用户结束捏合手势时,它会记录消息"Pinch ended(捏合已结束)"。
import React from 'react';
class App extends React.Component {
handleTouchStart = (e) => {
if (e.touches.length === 2) {
console.log('Pinch started');
}
};
handleTouchEnd = (e) => {
if (e.touches.length < 2) {
console.log('Pinch ended');
}
};
render() {
return (
<div
onTouchStart={this.handleTouchStart}
onTouchEnd={this.handleTouchEnd}
style={{
width: '200px',
height: '200px',
backgroundColor: 'lightblue',
textAlign: 'center',
lineHeight: '200px',
}}
>
PinchZoomApp
</div>
);
}
}
export default App;
输出
在浏览器中打开应用。使用支持触摸的设备(如智能手机或平板电脑)。同时用两根手指触摸应用以触发"捏合开始"消息。松开一根或两根手指以触发"捏合结束"消息。
摘要
触摸事件在 React 应用中起着重要作用,可用于创建引人入胜且具有交互性的用户界面,尤其是在触摸感应设备上。了解各种触摸事件以及如何管理它们,使我们能够为我们的网站或应用用户提供轻松的用户体验。

reactjs_reference_api.html