React Spring 是一个用于创建动画效果的 React 库,它可以让你以声明式和可维护的方式创建流畅的动画效果,而不必保留复杂的 CSS 或 JavaScript。
以下是一个简单的入门教程,您可以在官方文档中了解更多内容:https://www.react-spring.dev/docs 。
1. 安装 React Spring
npm install react-spring
2. 创建动画作用于组件
import { useSpring, animated } from 'react-spring';
const animation = useSpring({ opacity: 1, from: { opacity: 0 } });
<animated.div style={animation}>Hello, world!</animated.div>
在这个例子中,我们使用 `useSpring` 钩子创建了一个动画,将元素的不透明度从 0 到 1 进行过渡。然后,我们将这个动画应用于一个 `animated.div` 组件中,以实现元素的动画效果。
animated 组件 ( 动画的执行者,必须添加才能执行已设置的动画 )
React Spring 还提供了许多其他的动画效果和配置选项,包括过渡、延迟、插值器和回调函数等。
3. Hook Api介绍
3.1 动画定义(包含5个钩子):
- useSpring:创建一个单独的简单动画 Spring-从a→b移动数据的单个弹簧
- useSprings:创建一组同时执行的 Spring-多个弹簧(不同),用于列表,每个弹簧从a→b移动数据
- useTrail:创建一组依次执行的 Spring-多个弹簧(相同),一个弹簧在另一个弹簧之后/跟随
- useTransition:添加组件 mounted/unmounted 等生命周期变化时的动画
- useChain:用于自定义 Spring 执行顺序-将多个动画排队或连接在一起
3.2 默认配置config
弹簧属性 ( 影响动画的速度、加速度、延迟、误差等基本属性 ) 的默认值
重要参数解释:
// 弹簧质量:回弹惯性,质量越大惯性越大
mass?: number default 1
// 弹簧张力:影响整体速度,张力越紧速度越快
tension?: number default 170
// 摩擦力:可以与mass、tension的效果相互抵消
friction?: number default 26
// 动画开始的延迟
delay?: number
// 当duration大于0时,动画将在规定的时间范围内执行,一旦超过就结束动画;否则将一直执行到动画结束,没有时间限制
duration?: number default undefined | 0 ms
// 动画执行速度
velocity?: number default 0
// 当动画弹簧越过边界时,是否立即结束动画
clamp?: boolean default false
// 准确率
precision?: number default 0.01
// 缓动函数,默认是线性的,可以换成其他的如d3-ease(动画运行轨迹函数)
easing?: (t: number) => number default false
官方内置弹簧配置:
config.default { mass: 1, tension: 170, friction: 26 }
config.gentle { mass: 1, tension: 120, friction: 14 }
config.wobbly { mass: 1, tension: 180, friction: 12 }
config.stiff { mass: 1, tension: 210, friction: 20 }
config.slow { mass: 1, tension: 280, friction: 60 }
config.molasses { mass: 1, tension: 280, friction: 120 }
更多React组件可查看:React组件汇总