commit
17a28c0f68
@ -0,0 +1,60 @@ |
|||||||
|
import {FC, useEffect, useState} from "react"; |
||||||
|
import {Image, View} from "@tarojs/components"; |
||||||
|
import emptyImg from '@/static/img/empty.png' |
||||||
|
import {AtActivityIndicator} from "taro-ui"; |
||||||
|
|
||||||
|
interface Props { |
||||||
|
src: string |
||||||
|
mode?: "scaleToFill" | "aspectFit" | "aspectFill" | "widthFix" | "heightFix" | "top" | "bottom" | "center" | "left" | "right" | "top left" | "top right" | "bottom left" | "bottom right" | undefined |
||||||
|
width:number |
||||||
|
height:number |
||||||
|
fallback?: string |
||||||
|
} |
||||||
|
|
||||||
|
const Img: FC<Props> = ({src,mode = 'aspectFill',width,height,fallback = emptyImg}) => { |
||||||
|
const [isError,setIsError] = useState(false) |
||||||
|
const [loading,setLoading] = useState(true) |
||||||
|
|
||||||
|
useEffect(()=>{ |
||||||
|
console.log(src, !src) |
||||||
|
if(!src){ |
||||||
|
setIsError(true) |
||||||
|
setLoading(false) |
||||||
|
} else { |
||||||
|
setIsError(false) |
||||||
|
setLoading(false) |
||||||
|
} |
||||||
|
},[src]) |
||||||
|
// 图片加载失败
|
||||||
|
function onErrorHandler() { |
||||||
|
setLoading(false) |
||||||
|
setIsError(true) |
||||||
|
} |
||||||
|
function onLoadHandler() { |
||||||
|
setLoading(false) |
||||||
|
setIsError(false) |
||||||
|
} |
||||||
|
|
||||||
|
return ( |
||||||
|
<View style={{width:`${width}rpx`,height:`${height}rpx`,backgroundColor:'eee'}}> |
||||||
|
{ !isError && |
||||||
|
<Image |
||||||
|
src={src} |
||||||
|
mode={mode} |
||||||
|
style={{width:`${width}rpx`,height:`${height}rpx`}} |
||||||
|
onError={onErrorHandler} |
||||||
|
onLoad={onLoadHandler}> |
||||||
|
</Image> |
||||||
|
} |
||||||
|
{ loading && |
||||||
|
<AtActivityIndicator mode={"center"} content='加载中...'></AtActivityIndicator> |
||||||
|
} |
||||||
|
{ isError && !loading && |
||||||
|
<Image mode={'aspectFill'} src={fallback} style={{width:`${width}rpx`,height:`${height}rpx`}}></Image> |
||||||
|
} |
||||||
|
|
||||||
|
</View> |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
export default Img |
Loading…
Reference in new issue