【发布时间】:2021-11-17 22:32:30
【问题描述】:
我正在尝试从 onLoadingComplete 道具获取 naturalWidth 和 naturalHeight:https://nextjs.org/docs/api-reference/next/image#onloadingcomplete 但它不起作用?也许我做错了?
我有这个功能:
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()}
【问题讨论】:
-
您能给我们提供一个MRE吗?根据您当前的描述,我无法重现该问题:codesandbox.io/s/loving-mahavira-9ygdi?file=/pages/…(重定向到
/layout-fill并向下滚动到第二张图片以查看日志。) -
@brc-dd 所以我有一个代码框,您可以在其中上传图片:codesandbox.io/s/proud-rain-d51sv?file=/pages/index.js,第 62-63 行
-
看来
onLoadingComplete不会在数据(base64)URI 的情况下被触发。此外,第 63 行的事情似乎正在工作,因为它只是在每个组件安装/渲染上被简单地调用。() => {console.log('loaded')}应该可以工作,但事实并非如此。我想您需要在 Next.js 的 GitHub 上为此创建一个问题/讨论。一种解决方法是创建 blob:// URL,而不是数据 URI。我不确定它是否会起作用。 -
可以确认它正在处理对象 URL (
blob:)。 codesandbox.io/s/jolly-ellis-4htdl?file=/pages/index.js -
@brc-dd 也可以确认。谢谢!你想创建一个答案以便我接受吗?
标签: reactjs next.js react-props nextjs-image