首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Next.js设置只单击图像组件上的事件

Next.js设置只单击图像组件上的事件
EN

Stack Overflow用户
提问于 2021-09-24 05:40:02
回答 1查看 1.9K关注 0票数 1

我希望能够只对图像执行单击事件,但由于必须设置宽度和高度,因此必须在整个父div上设置单击事件。

例如,如果图像的宽度为600宽300英尺,在父图像之间仍有空格单击事件仍然发生在图像之外,但在父图像中。

代码语言:javascript
复制
<div
  style={{ width: 600, height: 600 }}
  className="image-item bg-gray-200 w-9/12 h-auto relative"
>
  <div
    onClick={(e) => handleTags(e)}
    className=""
    ref={imageWrapRef}
  >
    <Image
      className=""
      src={image["data_url"]}
      alt=""
      layout="fill"
      objectFit="contain"
    />
  </div>
</div>

上面和下面的空间仍然是可点击的,但我只想点击图片。

生成代码的检查器元素的屏幕截图:

这里还有一个工作代码框:https://codesandbox.io/s/proud-rain-d51sv?file=/pages/index.js

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 18:48:22

所以对于任何遇到这个问题的人来说。在显示图像之前,我必须设置图像的宽度和高度。

帮助我的答案之一是使用onLoadingComplete,您可以在这里看到更多的细节:Next.js Image component props onLoadingComplete not working?

这使我能够提供宽度/高度:

代码语言:javascript
复制
<Image
  onLoadingComplete={(e) => handleImageLoad(e)}
  className=""
  src={data2blob(image)}
  alt=""
  width={imageWidth}
  height={imageHeight}
  layout="responsive"
  objectFit="contain"
/>

handleImageLoad函数如下:

代码语言:javascript
复制
const handleImageLoad = (e) => {
  setImageWidth(e.naturalWidth);
  setImageHeight(e.naturalHeight);
};

编辑:

我在上面遇到了一个问题,那就是鸡和蛋的问题(图像上传,然后是尺寸)。所以我要做的是首先设置宽度和高度:

代码语言:javascript
复制
const [imageWidth, setImageWidth] = useState(0);
const [imageHeight, setImageHeight] = useState(0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69310055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档