相关疑难解决方法(0)

同构/通用反应中的图像onLoad事件 - 加载图像后注册事件

在同构呈现的页面图像可以在主script.js文件之前下载.因此,可以在react注册onLoad事件之前加载图像- 从不触发此事件.

script.js

constructor(props) {
    super(props);
    this.handleImageLoaded = this.handleImageLoaded.bind(this);
}

handleImageLoaded() {
    console.log('image loaded');
} 

render() {
    return (
        <img src='image.jpg' onLoad={this.handleImageLoaded} />
    );
}
Run Code Online (Sandbox Code Playgroud)

场景1 - image.jpg大于script.js

image.jpg比script.js大

在这种情况下一切正常.在最终加载图像之前注册事件,因此在控制台中是image loaded消息.


场景2 - image.jpg小于script.js

image.jpg小于script.js

在这种情况下,您可以看到帖子开头描述的问题.onLoad事件未触发.


为了onLoad方案2中触发事件,我该怎么办?


编辑:Soviut答案实施

要检测渲染时图像是否准备好,您应该检查complete纯javascript img对象上的属性:

constructor(props) {
    super(props);
    this.state = { loaded: false };
    this.handleImageLoaded = this.handleImageLoaded.bind(this);
    this.image = React.createRef();
}

componentDidMount() {
    const img …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs isomorphic-javascript

18
推荐指数
4
解决办法
1万
查看次数