ReactJS 教程

ReactJS 主页 ReactJS 简介 ReactJS 路线图 ReactJS 下载安装和环境配置 ReactJS 功能 ReactJS 优势和缺点 ReactJS 架构 ReactJS 创建 React 应用程序 ReactJS JSX ReactJS 组件 ReactJS 嵌套组件 ReactJS 使用组件 ReactJS 集合组件 ReactJS 样式 ReactJS 属性 (props) ReactJS 使用属性创建组件 ReactJS props 验证 ReactJS 构造函数 ReactJS 组件生命周期 ReactJS 事件管理 ReactJS 创建事件感知组件 ReactJS Expense Manager 事件 ReactJS 状态管理 ReactJS 状态管理 API ReactJS 无状态组件 ReactJS Hooks 进行状态管理 ReactJS Hooks 的组件生命周期 ReactJS 布局组件 ReactJS 分页 ReactJS Material UI ReactJS Http 客户端编程 ReactJS 表单编程 ReactJS 受控组件 ReactJS 非受控组件 ReactJS Formik ReactJS 条件渲染 ReactJS 列表 ReactJS Key 键 ReactJS 路由 ReactJS Redux ReactJS 动画 ReactJS Bootstrap ReactJS Map ReactJS 表格 ReactJS 使用 Flux 管理状态 ReactJS 测试 ReactJS CLI 命令 ReactJS 构建和部署 ReactJS 示例

Hooks

ReactJS Hooks 简介 ReactJS 使用 useState ReactJS 使用 useEffect ReactJS 使用 useContext ReactJS 使用 useRef ReactJS 使用 useReducer ReactJS 使用 useCallback ReactJS 使用 useMemo ReactJS 自定义 Hooks

ReactJS 高级

ReactJS 可访问性 ReactJS 代码拆分 ReactJS 上下文 ReactJS 错误边界 ReactJS 转发 Refs ReactJS 片段 ReactJS 高阶组件 ReactJS 与其他库集成 ReactJS 优化性能 ReactJS Profiler API ReactJS Portals ReactJS 不使用 ES6 ECMAScript ReactJS 不使用 JSX 的 React ReactJS Reconciliation ReactJS Refs 和 DOM ReactJS 渲染道具 ReactJS 静态类型检查 ReactJS 严格模式 ReactJS Web 组件

其他概念

ReactJS 日期选择器 ReactJS Helmet ReactJS 内联样式 ReactJS PropTypes ReactJS BrowserRouter ReactJS DOM ReactJS 轮播 ReactJS 图标 ReactJS 表单组件 ReactJS 参考 API

ReactJS 有用资源

ReactJS 快速指南 ReactJS 备忘录 Axios 备忘录 ReactJS 有用资源 ReactJS 讨论


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