javascript - 在页面加载时使用默认图像,然后覆盖它
问题描述
我有一个包含几张图片的页面。当页面加载时,它会为每个 IMG 提供一个默认图像:
import default from './pics/default.jpg';
<img src={default} alt="#"/>
我想要的是这样的:
<img src1={default} src2="img url" alt="#"/>
src2 在加载时会覆盖 src1。
编辑: 第一个图像(src1)在页面加载时出现,而第二个图像(src2)是通过互联网请求的。示例:https ://cdn.pixabay.com/photo/2016/10/17/10/52/wind-farm-1747331__340.jpg
解决方案
在您的元素上使用onLoad
事件。<img>
您可以给它一个display: none
样式,直到它完成加载。
class ImageRoll extends React.Component {
state = {loaded: false};
showImage = () => {
this.setState({loaded: true});
}
render() {
return (
<>
<img src="/path-to-initial" style={ this.state.loaded ? {display: "none"} : {}} />
<img src="/path-to-seocndary" onLoad={this.showImage} style={ this.state.loaded ? {} : {display: "none"}} />
</>
);
}
}
编辑:与其他答案相反,我们想要这样做的原因是替换图像上的 src 实际上是不好的做法。如果要滚动图像,最好有两个<img>
元素并根据条件在它们之间切换。
推荐阅读
- r - 使用 dplyr 将函数应用于一行中的选定列
- angular - 具有时间间隔的角条件轮询
- r - 为什么我使用 glm 函数会出现列表错误
- mql4 - 如何使用指标计数以及如何将关键事件转换为 MQL4 中的代码
- php - 使用 PHPMailer 发送电子邮件并将电子邮件标记为在 O365 中已回复
- css - 我在引导卡上实现了背景渐变叠加,但标题文本也得到了背景叠加
- vue.js - 改变 VueJS 的生命周期
- javascript - 是否可以在赛普拉斯中为常量值命名?
- oracle-apex - 为应用程序设计 Oracle APEX 数据库 - 心理障碍
- python - 在给定条件奇数或偶数的情况下,如何对列表中的偶数或奇数求和?