Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
Next.js configurando el evento de clic solo en el componente de imagen

Quiero poder hacer un evento de clic solo en la imagen, pero debido a que tengo que establecer el ancho y la altura, está configurando un evento de clic en todo el div principal.

por ejemplo, si la imagen tiene un ancho de 600 por una altura de 300, donde hay espacio entre el padre, el evento de clic todavía ocurre fuera de la imagen pero dentro del padre.

 <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>

ingrese la descripción de la imagen aquí

Todavía se puede hacer clic en el espacio arriba y debajo de la imagen, pero solo quiero hacer clic solo en la imagen.

Captura de pantalla del elemento inspector del código producido:

ingrese la descripción de la imagen aquí

Aquí también hay un codesandbox que funciona: https://codesandbox.io/s/proud-rain-d51sv?file=/pages/index.js

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces, para cualquiera que se encuentre con este problema. Una cosa que tendría que configurar es el ancho y el alto de la imagen antes de mostrarla.

Una de las respuestas que me ayudó fue usar onLoadingComplete , que puede ver más detalles aquí: Next.js ¿Los accesorios del componente de imagen onLoadingComplete no funcionan?

Esto me permitió proporcionar el ancho/alto:

 <Image onLoadingComplete={(e) => handleImageLoad(e)} className="" src={data2blob(image)} alt="" width={imageWidth} height={imageHeight} layout="responsive" objectFit="contain" />

la función handleImageLoad así:

 const handleImageLoad = (e) => { setImageWidth(e.naturalWidth); setImageHeight(e.naturalHeight); };

Editar:

Me encontré con un problema anterior, que era el problema del huevo y la gallina (la carga de la imagen y luego las dimensiones). Entonces, lo que tenía que hacer era establecer inicialmente el ancho y la altura:

 const [imageWidth, setImageWidth] = useState(0); const [imageHeight, setImageHeight] = useState(0);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda