fedisearch/application/src/components/FallbackImage.tsx

28 wiersze
821 B
TypeScript
Czysty Zwykły widok Historia

'use client'
2022-11-03 18:38:01 +00:00
import React, { ImgHTMLAttributes, ReactElement, useEffect, useState } from 'react'
export default function FallbackImage ({
fallbackSrc,
src,
alt,
...props
}: ImgHTMLAttributes<HTMLImageElement> & { fallbackSrc?: string }): ReactElement {
2022-09-14 19:16:00 +00:00
const [showFallback, setShowFallback] = useState<boolean>(false)
useEffect(() => {
2022-11-03 18:38:01 +00:00
setShowFallback(src === undefined || src === null || src === '')
2022-09-14 19:16:00 +00:00
}, [src])
const handleError = (event): void => {
2022-11-03 18:38:01 +00:00
if (props.onError != null) {
2022-09-14 19:16:00 +00:00
props.onError(event)
}
2022-11-03 18:38:01 +00:00
if (fallbackSrc === undefined || fallbackSrc === '') {
2022-09-14 19:16:00 +00:00
return
}
setShowFallback(true)
}
if (showFallback) {
return <img src={fallbackSrc} alt={alt} onError={handleError} {...props}/>
}
return <img src={src} alt={alt} onError={handleError} {...props}/>
}