SuperAPI AI 工具集

animating-react-native-expo

编程与开发

查看项目

更新于 10-15 14:49

技能介绍

用途

该技能面向 React Native 或 Expo 应用中的动效实现与调试,目标技术栈为 Reanimated 4 与 Gesture Handler 3(RNGH 3)。它帮助开发者按正确的驱动方式组织动画,避免把逐帧数值混入 React 渲染,并确保交互在成功、取消、中断等情况下都有明确状态。

主要能力

  • 按驱动方式选择动画方案:状态变化使用 CSS 过渡,挂载与重排使用布局动画,手势、滚动与物理效果使用共享值和 worklet。
  • 处理完整交互状态:初始、激活、完成、取消、中断、禁用以及减弱动效状态,并考虑布局边界、方向与尺寸变化、多点触控、导航与卸载。
  • 处理 Gesture Handler 3 的生命周期语义,例如 onDeactivate 事件中的 canceled 字段,以及仅在手势成功后执行提交动作。
  • 管理 worklet 闭包与跨运行时回调,使用 scheduleOnRN 调用 React Native 运行时中定义的函数。
  • 支持无障碍动效:尊重系统减弱动效策略,提供非手势替代操作,保留标签、焦点、禁用状态与点击区域。
  • 生命周期管理:在卸载、离屏、后台或减弱动效时停止装饰性循环与帧回调,并重置为有意义的静态状态。
  • 验证方法:对锁定技术栈进行类型检查,覆盖成功、取消、中断、重复激活、待定与错误结果、减弱动效、屏幕阅读器替代方案及支持平台,并在接近发布的构建上进行性能分析。

使用方式

技能建议先检查实际技术栈:读取 package 与 lockfile、原生架构与配置以及相关组件,使用包管理器的依赖树命令和当前兼容性指南,不要仅凭声明的包判断原生二进制或 Babel 插件是否匹配。若应用不在 Reanimated 4 与 RNGH 3 上,应选择受支持的升级路径或留在已安装 API 内,不要混用不同代 API 或添加兼容包装。Expo 项目应使用其 SDK 特定的安装解析,而不是逐个把原生包升级到最新。

实现时先定义一个完整交互,明确目标状态,而不是根据进行中的动画值是否非零来切换。保持 worklet 闭包精简,注意 UI worklet 仍在 UI 线程执行,昂贵计算会阻塞渲染。手势组合使用手势契约与 v3 语义,起始模式参考 recipes。

适用场景

适用于需要在 React Native 或 Expo 中实现状态过渡、布局动画、手势驱动、滚动联动或物理动效的场景,也适用于调试动效取消、中断、重复激活、无障碍减弱动效以及性能问题。

限制

该技能明确针对 Reanimated 4 与 RNGH 3;其他版本需谨慎处理。useReducedMotion() 只报告启动时的设置,不是实时订阅,运行中变化需使用应用的 AccessibilityInfo 响应式订阅并在清理时移除监听。UI 线程执行不保证 60/120 fps。调试应使用 Hermes 兼容方式,而非 JSC Remote JS Debugging。依赖字符串或模拟动画不能作为原生运行时证据。资料中未提供具体安装命令、代码示例、价格或平台支持细节。