内容简介:Takes care of running an animating function, provided as the first argument, while keeping track of its progress.When usedThe provided function receives the animation progress and a
useRequestAnimationFrame
Takes care of running an animating function, provided as the first argument, while keeping track of its progress.
When used useRequestAnimationFrame
immediately starts a looping call the provided function by using window.requestAnimationFrame
under the hood.
The provided function receives the animation progress and a next
function to be performed to keep the animation alive.
The loop ends when the animation progress reaches the value of 100. (or any other value provided as finishAt
, check the options)
Why? :bulb:
- Easily manage a requestAnimationFrame function within a React component
Basic Usage
import { useRef } from 'react';
import { Alert } from 'beautiful-react-ui';
import { useRequestAnimationFrame } from 'beautiful-react-hooks';
const AnimationExample = () => {
const ref = useRef();
useRequestAnimationFrame((progress, next) => {
ref.current.style.transform = `translateX(${progress}px)`;
next();
});
return (
<DisplayDemo>
<div ref={ref}>
<Alert color="primary" >Animating content</Alert>
</div>
</DisplayDemo>
);
};
<AnimationExample />
Options
An object of options can be used as second argument to control the animation.
Please note: options.finishAt = -1 will cause an infinite animation
import { useRef } from 'react';
import { Alert } from 'beautiful-react-ui';
import { useRequestAnimationFrame } from 'beautiful-react-hooks';
const AnimationExample = () => {
const ref = useRef();
const options = {increment: 0.5, startAt: 0, finishAt: -1 };
useRequestAnimationFrame((progress, next) => {
ref.current.style.transform = `rotate(${progress}deg)`;
next();
}, options);
return (
<DisplayDemo>
<div ref={ref}>
<Alert color="primary" >Animating content</Alert>
</div>
</DisplayDemo>
);
};
<AnimationExample />
onFinish callback
The hook returns an function to possibly set a callback when the animation finishes:
import { useRef, useState } from 'react';
import { Alert, Paragraph } from 'beautiful-react-ui';
import { useRequestAnimationFrame } from 'beautiful-react-hooks';
const AnimationExample = () => {
const ref = useRef();
const [isFinished, setIsFinished] = useState(false);
const onFinish = useRequestAnimationFrame((progress, next) => {
ref.current.style.transform = `translateX(${progress}px)`;
next();
});
onFinish(() => setIsFinished(true));
return (
<DisplayDemo>
<div ref={ref}>
<Alert color="primary" >Animating content</Alert>
</div>
{isFinished && <Paragraph>Animation completed!</Paragraph>}
</DisplayDemo>
);
};
<AnimationExample />
Control the speed of your animation by changing the increment value
Mastering the hook
- When in need to perform requestAnimationFrame without re-rendering the component on each frame
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机程序的构造和解释
Harold Abelson、Gerald Jay Sussman、Julie Sussman / 裘宗燕 / 机械工业出版社 / 2004-2 / 45.00元
《计算机程序的构造和解释(原书第2版)》1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序的构造和解释(原书第2版)》对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。 海报:一起来看看 《计算机程序的构造和解释》 这本书的介绍吧!