reactjs - 在 React 中延迟加载图像
问题描述
我有一个Image
接收图像名称的组件,并使用一些逻辑来确定资产文件夹的位置。
我的图像组件看起来像这样:
export default function Image({
basename,
fallbackBasename,
onError,
...props
}) {
const imageAssetsBaseUrl =
path.extname(basename) === 'svg'
? '../../../assets/icons'
: '../../../assets/images';
const [hasError, setHasError] = useState(false);
const handleError = (...args) => {
setHasError(true);
onError(...args);
};
const imageSource = React.lazy(() =>
import(
hasError
? `${imageAssetsBaseUrl}${fallbackBasename}`
: `${imageAssetsBaseUrl}${basename}`
),
);
return (
<React.Suspense fallback={<div>loading...</div>}>
<img src={imageSource} onError={handleError} {...props} />
</React.Suspense>
);
}
我期望的是<div>loading...</div>
在图像被延迟加载时被渲染,并且图像在加载后被正确渲染。
实际发生的情况是在资产的加载阶段没有渲染任何内容,并且每当加载最终发生时,我都会收到错误图像,因为img
's 的来源是:[object Object]
.
解决方案
推荐阅读
- java - 等待 Kafka Send API 返回的 ListenAbleFuture 列表
- elasticsearch - 如何在 Kibana(7.6) 中为嵌套文件编写脚本字段
- json - 如何在没有 `jq` 的情况下获取 JSON 字段值?
- vba - Outlook vba 查找回复来源的项目的属性
- c# - 如何在 C# 中读取 cookie?
- php - Spatie 媒体库上传总是导致“请求在名为 [...] 的键中没有文件”
- makefile - 使用 dkms 构建内核模块
- json - Go json.Marshal 无法获得单个反斜杠
- python - 迭代两个具有索引的 2D numpy 数组
- javascript - 停止重新渲染当前组件中未使用的状态更改