img标签图片未加载完成时显示默认图片

229 字
1 分钟
img标签图片未加载完成时显示默认图片

在项目中使用img标签加载图片资源,当图片文件过大时,加载慢会出现图片裂了的情况,通过onload事件解决

import { FC, useState } from 'react';
import loadImage from './default.png';
type IProps = {
props: { [props: string]: number | string };
data: { [props: string]: string };
};
const Img: FC<IProps> = ({ props, data }) => {
const { src } = data;
const [imgSrc, setImgSrc] = useState(loadImage);
const handleLoad = () => {
const imgDom = new Image();
imgDom.src = src;
// 加载完成后显示
imgDom.onload = () => setImgSrc(src);
}
return <img onLoad={handleLoad} style={{...props}} src={imgSrc} alt='' />;
};
export default Img;

封装成组件

import { FC, useState } from 'react';
import loadImage from './default.png';
type IProps = {
props: { [props: string]: number | string };
loadImage: string
successImage: string
errorImage: string
};
const Img: FC<IProps> = ({ props, loadImage, successImage, errorImage }) => {
const [imgSrc, setImgSrc] = useState(loadImage);
const handleLoad = () => {
const imgDom = new Image();
imgDom.src = successImage;
// 加载完成后显示
imgDom.onload = () => setImgSrc(successImage);
imgDom.onError = () => setImgSrc(errorImage);
}
return <img onLoad={handleLoad} style={{...props}} src={imgSrc} alt='' />;
};
export default Img;
img标签图片未加载完成时显示默认图片
https://wangxiang.website/posts/语言基础/image-load/
作者
翔子
发布于
2022-09-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
翔子
前端开发工程师
公告
博客已从 VitePress 迁移到 Astro + Firefly 主题,223 篇文章全部保留。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
221
分类
9
标签
28
总字数
411,914
运行时长
0
最后活动
0 天前

文章目录