import React, { useState } from 'react';import PropTypes from 'prop-types';const Img = (props) => { const { defaultImg, alt, src, className } = props; const [currentSrc, setCurrentSrc] = useState(defaultImg); /** * 图片加载完成 */ const handleOnLoad = () => { // 创建一个img标签 const imgDom = new Image(); imgDom.src = props.src; // 图片加载使用正常的图片 imgDom.onload = () => { setCurrentSrc(src); } // 图片加载失败使用图片占位符 imgDom.onerror = () => { setCurrentSrc(defaultImg); }; }; return ( <img className={className} alt={alt} src={currentSrc} onLoad={handleOnLoad()} /> );};Img.propTypes = { defaultImg: PropTypes.string, className: PropTypes.string, alt: PropTypes.string, src: PropTypes.string,};Img.defaultProps = { alt: '图片', className: '', alt: '', src: '',};