我试图从onLoadingCompleteprops:https://nextjs.org/docs/api-reference/next/image#onloadingcomplete获取naturalWidth和naturalHeight,但无法正常工作?也许我做错了?
我有这个功能:
const handleImageLoad = (e) => {
console.log("load", e);
};
字符串
然后我从next.js得到这个组件
<Image
onLoadingComplete={(e) => handleImageLoad(e)}
className=""
src={image["data_url"]}
alt=""
layout="fill"
objectFit="contain"
/>
型
当图像加载时,它不做任何事情,如果我尝试控制台日志,它工作,但我不知道为什么它不工作时,我传递handleImageLoad
onLoadingComplete={() => handleImageLoad()}
型
2条答案
按热度按时间nukf8bse1#
**编辑:**v11.1.3-canary.33修复
如果
src
是一个数据URI,那么next/image
组件似乎没有调用onLoadingComplete
处理程序(我可以看到您已经打开了一个问题here)。现在的解决方法是使用Object URLs。如果你愿意,你可以直接实现它。参考this thread或链接的问题。
如果你想继续使用
react-images-uploading
,你可以使用this thread和其他方法中提到的方法,将提供的数据URI转换为对象URL,然后将其作为src
传递给next/image
。显然,这将是更高性能的操作,而不是自己处理上传的文件。下面是一个工作示例:https://codesandbox.io/s/jolly-ellis-4htdl?file=/pages/index.js
只是为了完整起见添加了一个替代方案:
字符串
myzjeezk2#
我遇到了一个类似的错误,我试图使图像可见,只有当它被加载。
如果将样式设置为
display:none
,则不会调用onLoadingComplete
,如下所示:字符串
为了解决这个问题,我必须设置一个不同的样式和定义一个空的
onError
函数(没有它,onLoadingComplete
将被调用,无论图像源是有效还是无效,即损坏的图像)型