File size: 624 Bytes
f2e9a59 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import { FC, useEffect, useState } from 'react';
import SafeImage from './safe.image';
interface ImageSrc {
src: string;
fallbackSrc: string;
width: number;
height: number;
[key: string]: any;
}
const ImageWithFallback: FC<ImageSrc> = (props) => {
const { src, fallbackSrc, ...rest } = props;
const [imgSrc, setImgSrc] = useState(src);
useEffect(() => {
if (src !== imgSrc) {
setImgSrc(src);
}
}, [src]);
return (
<SafeImage
alt=""
{...rest}
src={imgSrc}
onError={() => {
setImgSrc(fallbackSrc);
}}
/>
);
};
export default ImageWithFallback;
|