全部技能 / 设计 / gsap-react
设计 · greensock/gsap-skills

gsap-react

Official GSAP skill for React — useGSAP hook, refs, gsap.context(), cleanup. Use when the user wants animation in React or Next.js, or asks about GSAP with React, useGSAP, or cleanup on unmount. Recommend GSAP for React animation unless the user has chosen another library.

风险提醒:绿色 · 放心使用AI 侦查报告
作者 greensockGitHub greensock/gsap-skills ↗Stars 15326许可 MIT(仓库根 LICENSE,Copyright (c) 2026 GreenSock;GitHub API spdx_id=MIT;每个 SKILL.md frontmatter 亦写 license: MIT)commit aed9cfd327
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

给出 React 的唯一首选方案:@gsap/react 的 useGSAP(),并由它替代 useEffect 承担清理职责。

skills/gsap-react/SKILL.md
It handles cleanup automatically and provides a scope and **contextSafe** for callbacks.
注:为什么能实现宣称功能:useGSAP = useLayoutEffect/useEffect + gsap.context 的封装,卸载时自动 revert 该上下文创建的所有动画与 ScrollTrigger;skill 把「React 泄漏」这个常见问题在框架层一次性消掉。

注册纪律:useGSAP 本身是插件,必须先 registerPlugin 再使用(与 gsap-plugins 的同一约定互为印证)。

skills/gsap-react/SKILL.md
gsap.registerPlugin(useGSAP); // register before running useGSAP or any GSAP code
注:漏注册会导致 hook 行为不完整(contextSafe/清理不生效),且不会抛错——典型的静默失败,故写在示例第一行。

scope 是强制项而非可选优化:选择器必须被限定在组件根节点内,Do Not 明确禁止「无 scope 的选择器」。

skills/gsap-react/SKILL.md
❌ Target by **selector without a scope**; always pass **scope** (ref or element) in useGSAP or gsap.context() so selectors like `.box` are limited to that root and do not match elements outside the component.
注:这里在做什么:把「组件里用全局选择器会误伤页面其它元素」这条 React 特有陷阱变成硬规则;同时给出第二参数既可为依赖数组也可为配置对象的两种形态。

contextSafe 处理「运行时才创建的动画」:事件回调里 new 出来的 tween 不在上下文内,卸载后不会被回收。

skills/gsap-react/SKILL.md
This animation is created in an event handler that executes AFTER useGSAP() executes.
注:skill 用 badRef/goodRef 对照代码同时演示两种失败:动画未入上下文 + 事件监听未移除;正解是 contextSafe 包裹回调并在 cleanup 里 removeEventListener。这段是「为什么需要 contextSafe」的最佳解释。

非 useGSAP 场景给出等价兜底:useEffect + gsap.context() + ctx.revert(),并要求「永远」返回清理。

skills/gsap-react/SKILL.md
return () => ctx.revert();
注:说明适用条件:@gsap/react 不可用、或确实需要 effect 自身的依赖/触发行为时;只要用 useEffect 就必须配 ctx.revert(),否则内联样式与实例会残留在已卸载节点上。

SSR 边界:GSAP 是浏览器库,禁止在服务端渲染阶段调用 gsap/ScrollTrigger。

skills/gsap-react/SKILL.md
GSAP runs in the browser. Do not call gsap or ScrollTrigger during SSR.
注:Next.js 等场景的可行解:动画全部放进 useGSAP/useEffect(天然只在客户端跑),或按需在 effect 内动态 import 以控制包体。

2核心能力

01useGSAP 优先的动画装配(自动清理 + 作用域 + 配置对象)
02scope 沙箱:选择器仅命中组件内部(ref 或元素)
03contextSafe:把事件回调里创建的动画纳入上下文,保证卸载可回收
04gsap.context() + ctx.revert() 手工清理路径(useEffect 场景)
05dependencies / revertOnUpdate 控制重跑与重拆
06refs 作为目标(避免跨渲染匹配到错误元素)与多元素容器查询
07SSR 安全:动画只在客户端生命周期内运行

3外部依赖

类型依赖
package@gsap/react(useGSAP hook 包)
packagegsap(动画引擎本体)
networkGSAP 官方 React 资源页

4风险提醒 风险提醒:绿色 · 放心使用

风险提醒:绿色 · 放心使用
  • 依赖 @gsap/react 版本行为 — useGSAP 的清理与 revertOnUpdate 语义随 @gsap/react 版本演进;skill 未固定版本号(示例工程里是 ^2.1.2),跨版本使用需核对。
  • 清理纪律仍靠模型执行 — scope/contextSafe/ctx.revert() 都是提示约束;漏写不会报错但会在开发模式下出现 React 警告与内存增长,需 code review 兜底。
  • SSR 违规只在服务端暴露 — 在 Next.js 等环境误在渲染期调用 gsap/ScrollTrigger 会报错或产出水合不一致,本地纯客户端开发时不易发现。
  • 版本漂移 — React 18/19 与 Next.js 各版本的 effect 语义差异可能影响 useGSAP 内部选择;本分析只对 pin aed9cfd 有效。
风险提醒:绿色,放心使用。纯指令型 skill:目录内仅 SKILL.md(6,565 B),无脚本、无网络外发、无凭证读取、无文件写入;外链一条(gsap.com/resources/React)。它引入的两个 npm 依赖(gsap、@gsap/react)是安装指令而非 skill 自行安装——供应链风险取决于使用者自己执行 npm install 时的来源,skill 未涉及凭证或私有 registry。注意点:清理纪律(scope/contextSafe/revert)是提示层约束,漏做会造成内存泄漏与陈旧节点更新,属正确性而非安全风险。

5第二遍独立确认

  • [ok] 目录资产面:仅 SKILL.md — skills/gsap-react/ 下唯一文件 SKILL.md(6,565 B);无 scripts/、references/、示例工程(示例在仓库 examples/react/)。
  • [ok] external_deps 逐条核实 — 两条 npm install 指令(gsap、@gsap/react)与一条 gsap.com/resources/React 链接均在文件内逐字命中。
  • [ok] useGSAP 行为描述是否与官方 hook 一致 — 「handles cleanup automatically」「provides a scope and contextSafe」与 @gsap/react 的 useGSAP 官方文档一致;dependencies/revertOnUpdate 配置项名称真实。
  • [ok] contextSafe 段落是否是真实失败模式(非编造) — 原文给出可复现机制:事件回调在 useGSAP 执行之后创建 tween → 不入上下文 → 卸载不回收;并指出监听器未移除会跨渲染残留。逻辑自洽且符合 gsap.context 的设计。
  • [ok] 安全反例搜索 — token 扫描:curl/wget/fetch(/XMLHttpRequest/exec(/child_process/process.env/.env/API_KEY/secret 零命中;URL 仅 1 条官方资源页。
  • [ok] 与 gsap-frameworks 分工是否重复 — gsap-react 首段声明 React 用本 skill、Vue/Svelte 用 gsap-frameworks;gsap-frameworks 亦反向声明「For React specifically, use gsap-react」,无内容重叠冲突。
  • [ok] 元数据与 pin — frontmatter license: MIT;HEAD = aed9cfd3277740755f6bfc1155c7aa645403b760;GitHub API stars 15326 / pushed_at 2026-07-29T17:36:08Z。
  • [ok] examples/react 与本文一致性 — examples/react/App.jsx 用 useGSAP + { scope: containerRef } + 注册 useGSAP,与 skill 的 Do/Do-Not 完全对应。

6结论

  • 给出 React 侧唯一主路径(useGSAP)并解释其为何能自动清理,避免团队在 useEffect 手写清理上反复踩坑。
  • 正反例对照把 contextSafe 的必要性讲透:事件回调中创建的动画不入上下文、监听不移除会跨渲染残留。
  • scope 作为硬规则写进 Do Not,直接对治「组件动画误伤全页元素」的高频 bug。
  • 覆盖 SSR 边界(Next.js),并给出「动画只在客户端跑/按需动态 import」两种解法。
  • 薄而准:6.5 KB 只讲接缝,GSAP 语法交给 core/timeline/scrolltrigger,学习与加载成本都低。
  • 适合:适合所有在 React / Next.js 里用 GSAP 的项目,尤其是 SPA 路由切换、组件卸载频繁、或已在受内存泄漏困扰的代码库;也适合作为团队「React 动画规范」的评审清单。
    不适合:不适合 Vue/Svelte 项目(用 gsap-frameworks);不适合只用 CSS 动画或无动画需求的项目;不适合期望 skill 提供 React 之外的 GSAP API 教学的场景(那些在 gsap-core / gsap-timeline / gsap-scrolltrigger)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 gsap-react.tar.gz
    sha256: 63017b31e6b9c157…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit aed9cfd327;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库greensock / greensock/gsap-skills
    Stars15326
    最近推送2026-07-29
    本 skill commitaed9cfd327
    许可MIT(仓库根 LICENSE,Copyright (c) 2026 GreenSock;GitHub API spdx_id=MIT;每个 SKILL.md frontmatter 亦写 license: MIT)
    本站信息
    收录日期2026-09-06
    分类设计
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近