首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前一个图像保留,而下一个图像正在加载

问前一个图像保留,而下一个图像正在加载
EN

Stack Overflow用户
提问于 2021-04-14 23:25:08
回答 3查看 54关注 0票数 1

快速演示:Codesandbox link

请注意,当切换图像时,与下一张图像相关的文本会立即出现,但在加载下一张图像时,前一张图像会一直留在那里,直到下一张图像尚未完全加载。

最初,用户会看到:

代码语言:javascript
复制
Text 1
[             ]
[    Image1   ]
[             ]

在切换时,加载下一个图像需要一些时间,因此用户可以看到

代码语言:javascript
复制
Text 2
[             ]
[    Image1   ]
[             ]

然后,

代码语言:javascript
复制
Text 2
[             ]
[    Image2   ]
[             ]

理想情况下,我希望在加载下一个图像时清除前一个图像。有没有办法做到这一点?也就是说,在加载下一个图像时,用户应该看到

代码语言:javascript
复制
Text 2
[             ]
[             ]
[             ]

显然,这只会在第一次加载图像时发生。在获取图像之后(我猜存储在会话缓存或其他地方),当图像切换时不会有延迟。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-14 23:59:43

您可以使用另一个状态变量

代码语言:javascript
复制
  const [show, setShow] = useState(false);

然后将您的handleImageSwitch函数更改为

代码语言:javascript
复制
const handleImageSwitch = () => {
    setShow(false);
    item === 0 ? setItem(1) : setItem(0);
  };

将你的图片标签改成这样

代码语言:javascript
复制
<img
  onLoad={() => setShow(true)}
  style={{
    maxWidth: "200px",
    display: show ? "block" : "none",
    margin: "0 auto"
  }}
  src={images[item].url}
  alt=""
/>

查看我的沙盒:https://codesandbox.io/s/affectionate-goldwasser-fbr3c?file=/src/App.js

票数 1
EN

Stack Overflow用户

发布于 2021-04-14 23:33:18

试着这样做。

代码语言:javascript
复制
<div style={{ minHeight: "100px" }}>
      {item===0 && <img style={{ maxWidth: "200px" }} src={images[0].url} alt="" />}
      {item===1 && <img style={{ maxWidth: "200px" }} src={images[1].url} alt="" /> }
</div>

你可以在这里结交朋友。

https://codesandbox.io/s/modest-poitras-4ttp0?file=/src/Carousel.js:598-669

票数 0
EN

Stack Overflow用户

发布于 2021-04-14 23:45:04

获取图片需要时间。您可以将图像置于状态(useState([]) )中,并在useEffect钩子或函数中获取图像,然后使用加载状态。在拉取镜像之前,将loading设置为true。当loading为true时,您可以显示空白或任何内容来代替图像。这样,您只需获取一次图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67094595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档