Github https://github.com/pmndrs/react-spring
网站 https://react-spring.io
- react-spring是基于spring-physics 弹簧物理学 的 react动画库,动画效果更加流畅、自然
- 几乎可以实现任意UI动画效果
- 组件式使用方式(render-props模式),简单易用,符合react的声明式特性,性能高
- 继承了animated强大的插值和性能,以及 react-motion的易用性
react-spring 快速上手
react-spring库提供了2种API
- Hooks api 就是 React 16.8 的新增特性——Hook
- Render-props api ```jsx npm install react-spring
import { useSpring, animated } from ‘react-spring’
function App() { const props = useSpring({ to: { opacity: 1 }, from: { opacity: 0 } })
return
1. 导入Spring文档,使用Spring组件包裹要实现动画效果的遮罩层div
2. 通过render-props模式,讲参数props设置为遮罩层div的style
3. 给Spring组件添加from属性,指定:组件第一次渲染时的动画状态
4. 给Spring组件添加to属性,指定:组件要更新的新动画状态
5. props就是透明度有0~1中变化的值
<a name="CDNM5"></a>
## 数字动画
![image.png](https://cdn.nlark.com/yuque/0/2021/png/112859/1637723216042-81e157e1-755c-4430-abf8-0d8bb302290f.png#clientId=u0e01c8f0-4ab8-4&from=paste&height=73&id=ue935f515&originHeight=218&originWidth=422&originalType=binary&ratio=1&rotation=0&showTitle=false&size=8058&status=done&style=none&taskId=u148c33db-383a-4a4b-b4b5-1761d9b487f&title=&width=140.66666666666666)
```jsx
function Number() {
const [flip, set] = useState(false)
const { number } = useSpring({
reset: true,
reverse: flip,
from: { number: 0 },
number: 1,
delay: 200,
config: config.molasses,
onRest: () => set(!flip),
})
return <animated.div>{number.to(n => n.toFixed(2))}</animated.div>
}