reactjs - 图像仅在延迟 1 秒然后 setState 时呈现
问题描述
我在尝试异步加载图像并渲染它时遇到问题,我需要设置 100 毫秒的延迟来 setState 任何东西来渲染图像,但它只适用于少量图像,但对于更多图像,它需要超过 100 毫秒。任何人都有解决方案。非常感谢
this.props.callApi('GET', '/api/folders/' + child.id + '/files', null, this.props.token, (data) => {
console.log(data)
data.data.content.forEach(ele => {
fetch("/api/files/" + ele.id + "/blob")
.then((res) => res.blob())
.then((res) => {
childFolder.uploadFile.push(URL.createObjectURL(res));
});
})
arr.push(childFolder);
this.setState({uploadedLink: arr}, () => {
// this.setState(this.state)
// this.render();
// NEED TO SET DELAY TO IMAGE RENDERED
_.delay(() => this.setState({loading: false}), 100);
});
})
解决方案
使用onLoad
image 标签的 prop 来处理加载状态:
...
handleImgLoaded = () => {
this.setState({ loading: false })
}
render(){
const { uploadedLink } = this.state;
return (
<img src={uploadedLink} onLoad={this.handleImgLoaded} />
)
)
推荐阅读
- gdb - 获取 GDB 中函数的参数名称而不遇到断点
- python - 如果它的循环小于数字 n,这个 python 循环如何检查素数?
- list - 如何将列表中的连续数字组合到 Haskell 中的范围中?
- vb.net - 更改组合框中的内容时如何清除文本框?
- c# - 如何在 c# winforms 中为按钮添加货币价值?
- python - 在从 n 开始的多级索引 pandas 数据帧循环中,然后在整个数据帧上从 n+1、n+2、nth 开始再次循环
- genexus - 很容易意外关闭“保存时应用此模式”。有什么办法让这更困难或至少添加一个确认?
- javascript - 错误通过测试它不应该在 nrgx 选择器测试
- git - .gitignore 文件不起作用,git status 仍然显示 .gitignore 中列出的文件(已解决)
- python - 使用 Dataframe Pandas 中的参数查询 MySQL 数据库