xref: /MusicFree/src/components/base/fastImage.tsx (revision 410a159129b1f6a7a1f44fde7bfad9a46f91e161)
1import React, {useEffect, useState} from 'react';
2import FastImage, {FastImageProps} from 'react-native-fast-image';
3
4interface IFastImageProps {
5    style: FastImageProps['style'];
6    defaultSource?: FastImageProps['defaultSource'];
7    emptySrc?: number;
8    uri?: string;
9}
10export default function (props: IFastImageProps) {
11    const {style, emptySrc, uri, defaultSource} = props ?? {};
12    const [isError, setIsError] = useState(false);
13    const source = uri
14        ? {
15              uri,
16          }
17        : emptySrc;
18
19    useEffect(() => {
20        setIsError(false);
21    }, [uri]);
22    return (
23        <FastImage
24            style={style}
25            source={isError ? emptySrc : source}
26            onError={() => {
27                setIsError(true);
28            }}
29            defaultSource={defaultSource}
30        />
31    );
32}
33