react-native-gesture-handler 示例应用运行指南:克隆仓库、本地构建与在 Android/iOS 上体验全部手势能力

发布时间:2026/10/7 2:25:08

react-native-gesture-handler 示例应用运行指南:克隆仓库、本地构建与在 Android/iOS 上体验全部手势能力 移动开发UI组件【免费下载链接】react-native-gesture-handlerDeclarative API exposing platform native touch and gesture system to React Native.项目地址https://gitcode.com/gh_mirrors/re/react-native-gesture-handler点击查看免费下载react-native-gesture-handler 仓库内置了一套完整的示例应用Example App它以单屏示例列表的形式集中展示库中绝大多数手势能力是理解该库声明式手势 API 的最佳实践入口。本文以仓库当前实际结构为准完整讲解示例应用的组成、本地运行步骤克隆、依赖安装、启动 Metro 与构建 Android/iOS、通过 Expo 运行的方式并结合仓库源码剖析示例列表的组织结构与导航实现让你能快速搭建并逐个体验 Pan、Pinch、Rotation、Fling、LongPress、Hover 等手势的真实效果。示例应用是什么示例应用是仓库中一个普通的 React Native 应用其代码集中放在仓库的apps/目录下旧版本文档中对应Example/目录随着仓库迁移至 monorepo 结构后已更名为apps/下文会详细说明。它承担两个职责展示 Gesture Handler 库的大部分功能覆盖从基础手势拖拽、点击、轻扫到复杂组合场景底部抽屉、聊天头、相机滤镜、嵌套按压的全部示例作为回归测试与交互验证平台示例列表中包含大量Tests测试条目用于验证嵌套手势、事件取消、指针类型等边界行为。应用由一组单屏示例构成主界面是一个可搜索、可分组的手势示例列表点击任意条目即可进入对应的手势演示页面。从源码结构看每个示例都位于apps/common-app/src/下独立的文件夹中例如 new_api/simple/tap、new_api/showcase/bottom_sheet与旧文档每个示例位于独立文件夹的描述完全一致。示例应用在当前仓库中的布局进入仓库根目录后可以看到示例应用相关的工程全部位于 apps 目录下共包含四个入口工程目录说明apps/basic-example基础示例工程只依赖react-native-gesture-handler一个库不引入 Reanimated、SVG 等其它包最便于确认手势库本身是否正常工作apps/common-app共享示例源码包几乎所有示例页面都定义在这里被其它示例工程复用apps/expo-example基于 Expo 的示例工程用于通过 Expo 生态运行示例apps/macos-example面向 macOS 平台的示例工程其中common-app是核心。它通过 App.tsx 使用react-navigation/stack构建导航主界面MainScreen以分组列表形式渲染示例条目而示例注册表则分别定义在两个文件中新版 API 示例new_api/index.tsx 中导出NEW_EXAMPLES旧版legacyAPI 示例legacy/index.tsx 中导出OLD_EXAMPLES两个注册表都遵循统一的ExamplesSection结构sectionTitle分组名 data示例数组每个示例含name、component及可选的unsupportedPlatforms该类型定义在 common.tsx 中。unsupportedPlatforms字段会决定某个示例在当前平台上是否可点击——例如Context Menu在 Android/iOS/macOS 上会显示为不可用仅支持 Web。通过 Expo 运行如果只想快速体验可以使用 Expo 方式运行示例应用。当前仓库中对应的工程是 apps/expo-example它的package.json提供了以下脚本start: expo start --dev-client, android: expo run:android, ios: expo run:ios, web: expo start --web进入apps/expo-example后执行yarn start即可启动 Expo 开发服务器--dev-client表示使用开发客户端模式。需要说明的是发布到 Expo 的版本通常不是最新代码仓库维护者一般只在 Expo SDK 发布新版本时同步更新线上 Snack 示例如果你想体验最新的示例例如包含最新版手势 API 的改动更可靠的方式是按下面章节在本地完整运行示例应用。在本地运行示例应用本地运行能保证你拿到的是与仓库源码完全同步的最新版本。整个过程分为环境准备、克隆仓库、安装依赖、启动开发服务器、构建平台应用五个阶段。前置环境准备示例应用本质是一个常规 React Native 应用因此首先需要按 React Native 官方的环境搭建步骤确保你的机器上已安装以下工具Node.js示例工程要求node 22.11.0见 apps/basic-example/package.json 的engines字段Yarn仓库使用 Yarn Workspaces 管理多包依赖Android SDK 与模拟器运行 Android 时Xcode 与 iOS 模拟器运行 iOS 时与旧版文档要求全局安装react-native-cli不同当前仓库已将react-native-community/cli及其平台插件作为工程的devDependencies声明同样见 apps/basic-example/package.json因此本地构建不再依赖全局 CLI只需保证仓库依赖安装完整即可。第一步克隆仓库git clone https://gitcode.com/gh_mirrors/re/react-native-gesture-handler.git第二步在仓库根目录安装依赖示例应用通过react-native-gesture-handler: workspace:*引用本仓库的库源码见 apps/basic-example/package.json因此必须在仓库根目录执行一次依赖安装Yarn 会把各 workspace 的依赖一并解析并建立符号链接cd react-native-gesture-handler/ yarn这一步同时会安装库本身的依赖以及apps/basic-example、apps/common-app等所有 workspace 的依赖。第三步进入示例工程以最精简的basic-example为例cd apps/basic-example如果你需要体验完整示例集含 Reanimated 动画、SVG 等联动场景应使用apps/common-app所在的宿主工程而basic-example刻意只依赖手势库本身便于隔离验证。两者依赖安装方式相同。第四步启动 Metro 开发服务器yarn start该命令等价于react-native start见 apps/basic-example/package.json 中scripts.start会启动 Metro Bundler 并等待设备连接。第五步构建并启动应用Android保持yarn start运行另开一个终端执行yarn android等价于react-native run-android会完成构建、安装并自动在已连接的设备或模拟器上启动应用。也可以通过 Android Studio 打开 apps/basic-example/android 直接运行。iOS首次运行 iOS 前需要先安装 CocoaPods 依赖。进入 iOS 目录执行cd apps/basic-example/ios pod install然后返回apps/basic-example执行yarn ios等价于react-native run-ios。也可以直接用 Xcode 打开 apps/basic-example/ios/BasicExample.xcworkspace 运行。运行前请确保已有 Android/iOS 真机或模拟器处于连接状态。四个示例工程basic-example、common-app宿主、expo-example、macos-example的package.json中均定义了相同的android/ios/start脚本运行方式完全一致。示例列表里都有什么启动后进入主界面你会看到一个带搜索框和分组标题的示例列表。当前默认展示的是新版 API 示例NEW_EXAMPLES共分为六大类分组示例Simple Gestures简单手势Basic Fling、Basic Tap、Basic LongPress、Basic Hover、Basic Pinch、Basic Rotation、Basic PanShowcase展示State Manager、Svg、Nested Text、Shared Value、Bottom Sheet、Overlap、Animated、TimerHover and mouse悬停与鼠标Stylus Data、Context Menu、Hover Positioning、Hoverable Icons、Mouse ButtonsComplicated复杂场景Lock、Velocity Test、Chat Heads、Camera、TransformationsComponents组件FlatList、ScrollView、Buttons、Button underlay、Touchable、Touchable stress test、Switch TextInput、Reanimated Swipeable、Reanimated Drawer LayoutTests测试RectButton、Two Finger Trackpad Pan、Web Styles Reset、Pointer Type、Reattaching、Modal with Nested Root View、Nested pressables、Nested touchables、Pressable、RN responder cancellation、Keyboard Should Persist Taps分组与条目的完整清单见 new_api/index.tsx 的NEW_EXAMPLES定义。每个分组恰好对应一类手势能力Simple Gestures是学习每种基础手势 API 的起点Showcase演示手势与 Reanimated 结合的下拉抽屉、聊天头、共享值动画等组合效果Hover and mouse面向 Web/桌面端的悬停、鼠标按键与手写笔数据Complicated覆盖锁屏式手势判定、速度测试、相机滤镜等进阶场景Components展示库提供的ReanimatedSwipeable、ReanimatedDrawerLayout等现成组件与 FlatList/ScrollView 的联动Tests则专门用于验证嵌套手势、事件取消等已知边界问题例如旧版文档中提到的 Nested Touchables - issue #784、Views overflowing parents - issue #1532 等回归场景。如何查看旧版legacyAPI 示例在 App.tsx 的主界面顶部设置区提供了两个开关Open last example on launch开启后应用会记住你上次进入的示例下次启动时直接打开Show legacy version examples开启后列表切换为旧版 API 示例OLD_EXAMPLES包含 Basic examples、Recipes、Showcase、Release tests、Simple 等分组可用于对比新旧两代手势 API 的写法差异。旧版示例清单见 legacy/index.tsx。主界面的搜索与导航实现从源码看主界面 MainScreen 使用ListWithHeader见 ListWithHeader.tsx渲染分组列表并提供两个实用能力搜索过滤输入关键字后filteredSections会按示例名称做不区分大小写的包含匹配实时过滤分组内容无匹配时显示 No examples match 提示。动态注册路由Stack.Screen通过(showLegacyVersion ? OLD_EXAMPLES : NEW_EXAMPLES).flatMap(...)动态注册每个示例页面因此切换版本开关后导航栈会随之重建为对应版本的示例集。这也印证了旧文档中应用由单屏示例列表构成、每个示例独立成文件夹的架构描述。运行中可能遇到的问题依赖未装全导致workspace:*解析失败react-native-gesture-handler在示例工程中被声明为workspace:*依赖若跳过根目录的yarn直接进入apps/basic-example安装会因找不到本地库包而报错。务必先在仓库根目录执行一次yarn。iOS 缺少 PodsiOS 工程的依赖通过 CocoaPods 管理见 Podfile首次运行前必须执行pod install否则yarn ios会因缺少原生依赖而构建失败。示例在部分平台不可用部分示例声明了unsupportedPlatforms例如Context Menu仅支持 Web、Two Finger Pan在 Android/macOS 上不可用这些条目在列表中会以灰色禁用态显示属于预期行为并非运行异常。想体验最新代码仓库中任何本地运行方式拿到的都是当前源码的最新状态只有在线发布的 Expo Snack 版本可能滞后于仓库进度如对版本敏感请优先本地运行。小结示例应用是 react-native-gesture-handler 最直观的学习与验证工具先git clone仓库再在根目录yarn完成 workspace 依赖安装进入apps/basic-example后分别用yarn startyarn android/yarn ios即可在设备或模拟器上运行iOS 首跑需额外pod install。完整的六大类新版示例与旧版示例均可在apps/common-app/src/下按文件夹逐一阅读源码无论是入门学习每种基础手势还是排查嵌套手势等边界问题这套示例工程都能提供一手且可直接运行的参考实现。赞分享移动开发UI组件【免费下载链接】react-native-gesture-handlerDeclarative API exposing platform native touch and gesture system to React Native.项目地址https://gitcode.com/gh_mirrors/re/react-native-gesture-handler点击查看免费下载相关推荐Deep-Live-Cam 快速上手教程3 步搞定摄像头与视频换脸的完整指南Deep Live Cam 快速上手教程3 步搞定摄像头与视频换脸的完整指南 如果你在深夜开播前想把摄像头里自己的脸换成某个角色又不想等导出、不想写代码移动开发UI组件电费到底花哪了Home Assistant 家庭能源管理一篇就够电费到底花哪了Home Assistant 家庭能源管理一篇就够 上个月电费 487 元空调单独贡献了多少没人答得上来。用 Home Assistant文档教程智能家居物联网FastAPI-MVC依赖管理使用Poetry和UV构建可靠的Python环境FastAPI MVC依赖管理使用Poetry和UV构建可靠的Python环境 FastAPI MVC是一款专注于提升开发者生产力的工具旨在帮助构建高质量、上一篇番茄小说下载器终极指南5种格式永久保存你的阅读时光下一篇Sunshine 游戏串流实战指南30 分钟搭起自托管 Moonlight 串流主机创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/7 2:20:08

Unity PBR渲染全解析:从传统Blinn-Phong到URP/HDRP的实践指南

我最早在Unity项目里被PBR这个词忽悠过一阵。那时查资料,翻到一篇讲"PBR策略路由"的文章,差点以为Unity和路由器有什么合作,后来才反应过来:渲染圈说的PBR,全名是Physically Based Rendering,跟网…

2026/10/7 2:20:08

银河麒麟V10密码重置:单用户模式实操与避坑指南

简介:银河麒麟V10桌面版单用户模式修改密码操作指南,以PDF文档形式提供,主要面向已部署国产操作系统的政企单位运维人员、系统管理员,也适合忘记登录密码、需要紧急恢复桌面访问权限的普通用户。文档基于银河麒麟V10桌面操作系统&…

2026/10/7 2:20:08

C语言开发RPG游戏源码:从main主循环到存档系统全解析

简介:这是一份基于C语言编写的RPG游戏源码压缩包,面向C语言初学者与进阶开发者,可作为游戏编程实战学习项目。包内共计两个文件,核心为游戏主程序入口代码,另配一张设计图辅助理解界面布局与流程,压缩包整体…

2026/10/7 3:25:11

宠物商城前后端分离实战:SpringBoot+Vue源码解析与运行部署

宠物商城系统前后端分离实战:从跑起来到改得动,一篇讲透这套可直接运行的源码怎么用我见过太多开源项目,标题写得天花乱坠,下载下来跑三天都起不来。但今天要聊的这套宠物商城网站信息管理系统,其源码落地性相当扎实&a…

2026/10/7 3:25:11

Spring Boot集成MongoDB全指南:配置、建模、索引与调优实战

1. 先说结论:为什么要把 MongoDB 接进 Spring Boot最近在折腾一个数据增长比较快的业务模块,关系型数据库在几张表 join 之后越来越吃力,尤其是文档型数据的读写,字段结构还不固定。于是把目光放到了 MongoDB 上,顺手在…

2026/10/7 3:25:11

Ubuntu鼠标闪烁抖动排查全攻略:从驱动到Wayland的完整修复指南

鼠标在 Ubuntu 桌面上闪烁、移动时不停抖动,这问题看着不大,但真的能让人瞬间暴躁。我玩 Linux 桌面这么多年,装过数不清的发行版,在 Ubuntu 20.04.1 上就结结实实被这个问题折磨过两回——一次是刚装完系统进桌面就抖&#xff0c…

2026/10/7 3:25:11

Allegro差分对属性设置:手动与自动的工程决策指南

1. 差分对不是“画两根线”那么简单:为什么属性设置决定信号完整性成败在Allegro PCB Designer里,把一对走线标上“DIFF_PAIR”四个字母,远不等于完成了差分对设计。我见过太多项目在高速信号测试阶段突然翻车——眼图闭合、串扰超标、EMI辐射…

2026/10/7 3:25:11

Spark Streaming实时模式深度解析:从微批到持续处理的架构与实践

1. Real-time Mode是什么:先分清两种“实时”在聊Spark Streaming的实时模式之前,必须先把一个被用滥的词挑明白——“实时”。很多团队跟我聊需求时张口就是“我们要实时数仓”,结果一细问,T1报表就算实时。真正做流计算的工程师…

2026/10/7 3:20:11

云上SOC建设实战:从被动响应到主动威胁狩猎的转型之道

云上安全运营中心(SOC)建设:从被动防御到主动狩猎1. 项目概述1.1 我为什么想写这个话题做云上安全这几年,我最深的一个感受是:很多团队的安全运营还停留在"告警响了才动"的阶段。告警中心积压了几千条未处置的告警,SIEM…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑