reactjs - 为什么这些图像会在屏幕上加载两次?
问题描述
我有一个 React 应用程序中的基本图像列表,延迟加载。一切正常,但是当我向上滚动到顶部时,一些图像会重新加载两次。似乎问题来自不透明动画。如何解决这个问题?加载图像后,它们应保留在屏幕上。
import React, { useState } from "react";
import styled from "styled-components";
const Picture = styled.img<{ loaded: boolean }>`
width:200px;
height:200px;
object-fit: cover;
object-position: center;
opacity: ${({ loaded }) => (loaded ? 1 : 0)};
transition: opacity 1s;
`;
export default function Image({src}) {
const [loaded, setLoaded] = useState(false);
const [error, setError] = useState(false);
return (
<Picture
loading="lazy"
src={error ? "error.png" : src}
onLoad={() => setLoaded(true)}
onError={() => setError(true)}
loaded={loaded || error}
/>
);
}
如果您想自己检查渲染,这里是一个沙箱:https ://codesandbox.io/s/busy-ardinghelli-z7pgv?file=/src/Image.tsx
谢谢!
解决方案
推荐阅读
- swift - 调用 AVAudioEngine.prepare() 时,AVAudioMixerNode 会自动与目标节点断开连接
- macos - 如何让VScode终端通过composer使用安装在Mac终端上的包
- php - 在我的主页上,我想显示一个“新闻”部分,其中包含过去 30 天内标记为“新闻”的帖子。如何?
- redis - 如何比 o(n) 更快地从 Redis 列表中删除
- reactjs - 出现错误 TS17004:除非提供了“--jsx”标志,否则无法使用 JSX
- angular - 在 Angular 库模块中导入 SCSS 变量文件
- python - 使用 matplotlib 和 seaborn 在多元时间序列图中突出显示时间间隔
- mongodb - 从 MongoDB FSGrids 开始
- python - 二叉搜索树中的“if self.left/right”是什么意思?
- python - 使用 Pandas,我如何用另一个系列的元素减去一个系列的所有重复元素?