diff --git a/src/content/TextAnimations/FallingText/FallingText.jsx b/src/content/TextAnimations/FallingText/FallingText.jsx index 44e5eb46d..fac7a1285 100644 --- a/src/content/TextAnimations/FallingText/FallingText.jsx +++ b/src/content/TextAnimations/FallingText/FallingText.jsx @@ -133,6 +133,7 @@ const FallingText = ({ Runner.run(runner, engine); Render.run(render); + let animationFrameId; const updateLoop = () => { wordBodies.forEach(({ body, elem }) => { const { x, y } = body.position; @@ -141,11 +142,12 @@ const FallingText = ({ elem.style.transform = `translate(-50%, -50%) rotate(${body.angle}rad)`; }); Matter.Engine.update(engine); - requestAnimationFrame(updateLoop); + animationFrameId = requestAnimationFrame(updateLoop); }; updateLoop(); return () => { + cancelAnimationFrame(animationFrameId); Render.stop(render); Runner.stop(runner); if (render.canvas && canvasContainerRef.current) { diff --git a/src/tailwind/TextAnimations/FallingText/FallingText.jsx b/src/tailwind/TextAnimations/FallingText/FallingText.jsx index 5c39c3697..b2beba095 100644 --- a/src/tailwind/TextAnimations/FallingText/FallingText.jsx +++ b/src/tailwind/TextAnimations/FallingText/FallingText.jsx @@ -134,6 +134,7 @@ const FallingText = ({ Runner.run(runner, engine); Render.run(render); + let animationFrameId; const updateLoop = () => { wordBodies.forEach(({ body, elem }) => { const { x, y } = body.position; @@ -142,11 +143,12 @@ const FallingText = ({ elem.style.transform = `translate(-50%, -50%) rotate(${body.angle}rad)`; }); Matter.Engine.update(engine); - requestAnimationFrame(updateLoop); + animationFrameId = requestAnimationFrame(updateLoop); }; updateLoop(); return () => { + cancelAnimationFrame(animationFrameId); Render.stop(render); Runner.stop(runner); if (render.canvas && canvasContainerRef.current) { diff --git a/src/ts-default/TextAnimations/FallingText/FallingText.tsx b/src/ts-default/TextAnimations/FallingText/FallingText.tsx index 6b68c3c7a..4a379dc5d 100644 --- a/src/ts-default/TextAnimations/FallingText/FallingText.tsx +++ b/src/ts-default/TextAnimations/FallingText/FallingText.tsx @@ -146,6 +146,7 @@ const FallingText: React.FC = ({ Runner.run(runner, engine); Render.run(render); + let animationFrameId: number; const updateLoop = () => { wordBodies.forEach(({ body, elem }) => { const { x, y } = body.position; @@ -154,11 +155,12 @@ const FallingText: React.FC = ({ elem.style.transform = `translate(-50%, -50%) rotate(${body.angle}rad)`; }); Matter.Engine.update(engine); - requestAnimationFrame(updateLoop); + animationFrameId = requestAnimationFrame(updateLoop); }; updateLoop(); return () => { + cancelAnimationFrame(animationFrameId); Render.stop(render); Runner.stop(runner); if (render.canvas && canvasContainerRef.current) { diff --git a/src/ts-tailwind/TextAnimations/FallingText/FallingText.tsx b/src/ts-tailwind/TextAnimations/FallingText/FallingText.tsx index e1fc17172..828d778fe 100644 --- a/src/ts-tailwind/TextAnimations/FallingText/FallingText.tsx +++ b/src/ts-tailwind/TextAnimations/FallingText/FallingText.tsx @@ -148,6 +148,7 @@ const FallingText: React.FC = ({ Runner.run(runner, engine); Render.run(render); + let animationFrameId: number; const updateLoop = () => { wordBodies.forEach(({ body, elem }) => { const { x, y } = body.position; @@ -156,11 +157,12 @@ const FallingText: React.FC = ({ elem.style.transform = `translate(-50%, -50%) rotate(${body.angle}rad)`; }); Matter.Engine.update(engine); - requestAnimationFrame(updateLoop); + animationFrameId = requestAnimationFrame(updateLoop); }; updateLoop(); return () => { + cancelAnimationFrame(animationFrameId); Render.stop(render); Runner.stop(runner); if (render.canvas && canvasContainerRef.current) {