xref: /MusicFree/src/components/base/fastImage.tsx (revision 024e8a8221d69df510ffa4b3ceee91d82dd4c37e)
1*024e8a82S猫头猫import React, {useEffect, useState} from 'react';
21574be2bS猫头猫import FastImage, {FastImageProps} from 'react-native-fast-image';
31574be2bS猫头猫
41574be2bS猫头猫interface IFastImageProps {
51574be2bS猫头猫    style: FastImageProps['style'];
61574be2bS猫头猫    defaultSource?: FastImageProps['defaultSource'];
71574be2bS猫头猫    emptySrc?: number;
81574be2bS猫头猫    uri?: string;
91574be2bS猫头猫}
101574be2bS猫头猫export default function (props: IFastImageProps) {
111574be2bS猫头猫    const {style, emptySrc, uri, defaultSource} = props ?? {};
12*024e8a82S猫头猫    const [isError, setIsError] = useState(false);
131574be2bS猫头猫    const source = uri
141574be2bS猫头猫        ? {
151574be2bS猫头猫              uri,
161574be2bS猫头猫          }
171574be2bS猫头猫        : emptySrc;
18*024e8a82S猫头猫
19*024e8a82S猫头猫    useEffect(() => {
20*024e8a82S猫头猫        setIsError(false);
21*024e8a82S猫头猫    }, [uri]);
221574be2bS猫头猫    return (
231574be2bS猫头猫        <FastImage
241574be2bS猫头猫            style={style}
25*024e8a82S猫头猫            source={isError ? emptySrc : source}
26*024e8a82S猫头猫            onError={() => {
27*024e8a82S猫头猫                setIsError(true);
28*024e8a82S猫头猫            }}
294060c00aS猫头猫            defaultSource={defaultSource}
304060c00aS猫头猫        />
311574be2bS猫头猫    );
321574be2bS猫头猫}
33