Поскольку вам нужно выполнять код только в componentDidMount, useEffect
с пустым массивом зависимостей является эквивалентом этого. Также для рефсов вы должны использовать useRef
hook
const Canvas = ({data: prop}) => {
const img = useRef(null);
const cnv = useRef(null);
useEffect(() => {
const canvas = cnv.current;
const image = img.current;
const ctx = canvas.getContext("2d");
image.onload = () => {
ctx.drawImage(image, 0, 0, prop.w, prop.h);
}
}, [])
return (
<div data-id={prop.ukey} key={prop.ukey}>
<canvas data-id={prop.ukey} key={prop.ukey} ref={cnv} width={prop.w} height={prop.h} />
<img alt="doc-img" ref={img} src={prop.image} className="hidden" />
</div>
);
}
PS. Я настоятельно рекомендую вам перейти на документацию по хукам и дать вам попытку кода в будущем. перед тем как задать такой вопрос