1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 21:06:42 +07:00

(nextjs) fixed image preloaders for SSR

This commit is contained in:
Fedor Katurov 2022-01-19 10:04:23 +07:00
parent 7e14b52bf9
commit d30cad9caa
4 changed files with 27 additions and 2 deletions

View file

@ -0,0 +1,20 @@
import React, { useEffect, useRef, VFC } from 'react';
interface ImgProps
extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {
onLoad?: () => void;
}
/** fixes the situation when img not fires onLoad at SSR */
const ImageWithSSRLoad: VFC<ImgProps> = ({ onLoad, ...rest }) => {
const ref = useRef<HTMLImageElement>(null);
useEffect(() => {
if (!ref.current?.complete || !onLoad) return;
onLoad();
}, [ref, onLoad]);
return <img {...rest} onLoad={onLoad} alt={rest.alt} ref={ref} />;
};
export { ImageWithSSRLoad };