????????????Perform animations on component mount with useRequestAnimationFrame ⚛️React hooks ????

栏目: IT技术 · 发布时间: 6年前

内容简介: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 />

:white_check_mark: Pro tip:

Control the speed of your animation by changing the increment value

Mastering the hook

:white_check_mark: When to use

  • When in need to perform requestAnimationFrame without re-rendering the component on each frame

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据挖掘

数据挖掘

(美)Jiawei Han、(加)Micheline Kamber、(加)Jian Pei / 范明、孟小峰 / 机械工业出版社 / 2012-8 / 79.00元

数据挖掘领域最具里程碑意义的经典著作 完整全面阐述该领域的重要知识和技术创新 这是一本数据挖掘和知识发现的优秀教材,结构合理、条理清晰。本书既保留了相当篇幅讲述数据挖掘的基本概念和方法,又增加了若干章节介绍数据挖掘领域最新的技术和发展,因此既适合初学者学习又适合专业人员和实践者参考。本书视角广阔、资料翔实、内容全面,能够为有意深入研究相关技术的读者提供足够的参考和支持。总之, 强烈推荐......一起来看看 《数据挖掘》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试