// from https://medium.com/@pdx.lucasm/canvas-with-react-js-32e133c05258 //import React from 'react'; import { useRef, useEffect } from 'react'; export const Canvas = (props: any) => { const { draw, options, ...rest } = props; //const { context, ...moreConfig } = options; const canvasRef = useCanvas(draw); return ; } export const useCanvas = (draw: (ctx: any, count: number) => void) => { const canvasRef: any = useRef(null); useEffect(() => { const canvas = canvasRef.current; const context = canvas!.getContext('2d'); let frameCount = 0; let animationFrameId: number; const render = () => { frameCount++; draw(context, frameCount); animationFrameId = window.requestAnimationFrame(render); } render(); return () => { window.cancelAnimationFrame(animationFrameId); } }, [draw]); return canvasRef; }