소스 정보
- 저장소
- chuanyue98/prompt-gallery
- 최근 소스 활동
- 2026년 4월 25일 09:48
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/chuanyue98/prompt-gallery --skill lottie-lottie-animation-integration명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | Lottie 动画集成 (Lottie Animation Integration) |
| description | 关于在 React 应用中使用 lottie-react 集成 Lottie 动画的指南 |
本技能文档提供了一套在 React 应用中集成 Lottie 动画的标准工作流。涵盖了安装、资源管理以及使用 lottie-react 控制动画的最佳实践。
lottie-react (轻量、维护良好的 Hook 风格库).json (标准 Lottie 格式)在集成 Lottie 动画时,遵循以下优先级:
AI 手搓 (AI Hand-crafting): 对于简单的微交互(如箭头跳动、淡入淡出、缩放、简单的路径位移),强烈建议由 AI 直接编写 JSON 代码。
shapes 里的 path 和 ks(Transform)里的 k(Keyframes)来实现基础动效。外部资源引用 (Fallback Strategy): 对于复杂的角色动画、流畅的插画动效或复杂的粒子效果,如果 AI 难以手搓,应当:
lottie-react 兼容。在目标工作区/应用中安装库:
# 使用 Yarn (推荐)
yarn add lottie-react
# 使用 NPM
npm install lottie-react
将 JSON 动画文件放置在组件附近的专用 assets 目录或共享 assets 文件夹中。
示例: src/pages/FeatureName/assets/animation-name.json
适用于简单的循环动画(如加载转圈、背景特效):
import Lottie from 'lottie-react'
import animationData from './assets/animation.json'
const SimpleAnimation = () => {
return (
<Lottie
animationData={animationData}
loop={true}
style={{ width: 100, height: 100 }}
/>
)
}
对于需要响应用户交互(如点击点赞、切换开关)的动画,需要使用 lottieRef。
核心概念:
lottieRef.current.playSegments([start, end], true): 清除等待队列并播放指定片段。lottieRef.current.goToAndStop(frame, true): 跳转到指定帧并暂停。true 表示按帧数跳转(而非时间)。autoplay={false}: 对于交互式动画至关重要,防止加载时自动播放。实现模式:
import Lottie, { type LottieRefProps } from 'lottie-react'
import { useRef, useEffect } from 'react'
import heartAnimation from './assets/heart.json'
// 如果 TypeScript 在当前环境中无法解析具体类型,可临时使用 any
// const lottieRef = useRef<any>(null)
export const LikeButton = ({ isLiked }: { isLiked: boolean }) => {
const lottieRef = useRef<LottieRefProps>(null)
const isFirstMount = useRef(true)
useEffect(() => {
if (!lottieRef.current) return
// 初始状态设置 (INITIAL STATE SETUP)
if (isFirstMount.current) {
// 如果已点赞,停在结束帧(如:实心红心)
// 如果未点赞,停在起始帧(如:空心轮廓)
lottieRef.current.goToAndStop(isLiked ? 60 : 0, true)
isFirstMount.current = false
}
// 交互更新 (INTERACTION UPDATES)
else if (isLiked) {
// 播放“点赞”动画(如:从第0帧播到第60帧)
lottieRef.current.playSegments([, ], )
} {
lottieRef..(, )
}
}, [isLiked])
(
)
}
在开发过程中,优先考虑在以下场景引入 Lottie 动画以提升用户体验:
微交互 (Micro-interactions):
状态反馈 (Feedback & States):
引导与展示 (Onboarding & Display):
游戏化元素 (Gamification):
goToAndStop(10, true)) 无效,试着往前退 1-2 帧(如 goToAndStop(8, true))。onDOMLoaded 回调来强制设置初始帧,以防 useEffect 执行过早或 Ref 尚未绑定。filter: invert(1) 等手段临时改变 SVG 渲染的 Lottie 颜色。playSegments,不要等接口返回。保留 disabled 逻辑防止重复点击即可。loading 时不要用条件渲染 ({loading ? <Spin /> : <Lottie />}) 销毁组件,这会导致动画瞬间消失。应通过控制 CSS visibility 或 opacity 来显示/隐藏 Loading。fillStyle 为空: lottie-web 在 JSDOM 环境下操作 Canvas 会报错。lottie-react 组件:jest.mock('lottie-react', () => ({
__esModule: true,
default: () => <div data-testid="lottie-mock" />,
}))
如果 LottieRefProps 无法导出或找不到:
useRef<any>(null)。lottie-react 版本是最新的,并检查其 index.d.ts 定义。SOC 직업 분류 기준