useRaf
Aboutβ
A continuously running requestAnimationFrame hook for React
Installationβ
npm install --save rooks
Importing the hookβ
import { useRaf } from "rooks";
Usageβ
let angle = 0;
function updateAngle() {
angle = (angle + 3) % 360;
return (angle * Math.PI) / 180;
}
function Demo() {
const { value: shouldRun, toggleValue: toggleShouldRun } = useToggle(true);
const myRef = useRef();
const canvasRef = useRef();
useRaf(() => {
if (canvasRef && canvasRef.current) {
const screenRatio = window.devicePixelRatio || 1;
let angle = updateAngle();
const canvas = canvasRef.current;
var ctx = canvas.getContext("2d");
ctx.save();
ctx.clearRect(0, 0, canvasRef.current.width, canvasRef.current.height);
ctx.scale(screenRatio, screenRatio);
ctx.fillStyle = "midnightblue";
ctx.globalAlpha = 1;
ctx.fillRect(0, 0, canvasRef.current.width, canvasRef.current.height);
ctx.fillStyle = "yellow";
ctx.lineWidth = 2;
ctx.translate(50, 50);
ctx.rotate(angle);
ctx.fillRect(-20, -20, 40, 40);
ctx.restore();
}
}, shouldRun);
return (
<>
<h2>
Request animation frame is now {shouldRun ? "" : "in"}active. Click to
toggle.
</h2>
<p>
<button onClick={toggleShouldRun}>Toggle Raf</button>{" "}
</p>
<canvas
ref={canvasRef}
style={{ height: `100px`, width: `100%`, background: "grey" }}
/>
</>
);
}
render(<Demo />);
Argumentsβ
Argument value | Type | Description | Default value |
---|---|---|---|
callback | (timeElapsed: number) => void | The callback function to be executed | undefined |
isActive | boolean | The value which while true, keeps the raf running infinitely | undefined |
Returnsβ
No return value.
Codesandbox Examplesβ
Basic Usageβ
Join Bhargav's discord serverβ
You can click on the floating discord icon at the bottom right of the screen and talk to us in our server.