Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
React hooks onHover modal en cada elemento de la matriz

El modal (cuadro verde) debe aparecer debajo de cada cuadro rojo separado una vez que haya un evento onHover. por el momento el recuadro verde solo aparece en la misma zona. por lo que sería una apertura modal debajo de cada cuadro rojo diferente. gracias de antemano

sandbox aquí https://codesandbox.io/s/modal-array-ccpso3?file=/src/App.js:0-1283

 import React, { useState } from "react"; import roundFace from "../src/sad.png"; const data = [ { image: roundFace, number: 1 }, { image: roundFace, number: 2 }, { image: roundFace, number: 3 } ]; export const Items = (imageUrl, heading) => ( <div className="flex flex-col"> <div className="px-2 py-2 mx-auto align-middle"> <div className="w-16 h-16 border-solid border-4 border-red-600"> <img className="" src={imageUrl} alt="" /> <div className={heading} /> </div> </div> </div> ); export const App = () => { const [Hover, setHover] = useState(false); return ( <div className=""> <div className="grid gap-x-8 gap-y-4 grid-cols-3 px-2 py-2"> {data && data.length > 0 && data.map((box, index) => ( <div key={`-${index}`}> <div onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} > <Items imageUrl={box.image} /> </div> {box.number} </div> ))} {Hover && ( <p className="w-16 h-16 border-solid border-4 border-green-600"> Hi! </p> )} </div> </div> ); }; export default App; import * as React from "react"; import { render } from "react-dom"; import App from "./App"; const rootElement = document.getElementById("root"); render(<App />, rootElement);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

App.js y aquí está.

 import React, { useState } from "react"; import roundFace from "../src/sad.png"; const data = [ { image: roundFace, number: 0 }, { image: roundFace, number: 1 }, { image: roundFace, number: 2 } ]; export const Items = (imageUrl, heading) => ( <div className="flex flex-col"> <div className="px-2 py-2 mx-auto align-middle"> <div className="w-16 h-16 border-solid border-4 border-red-600"> <img className="" src={imageUrl} alt="" /> <div className={heading} /> </div> </div> </div> ); export const App = () => { const [Hover, setHover] = useState(null); return ( <div className=""> <div className="grid gap-x-8 gap-y-4 grid-cols-3 px-2 py-2"> {data && data.length > 0 && data.map((box, index) => ( <div key={`attendees-${index}`}> <div onMouseEnter={() => setHover(index)} onMouseLeave={() => setHover(false)} > <Items imageUrl={box.image} /> </div> {box.number} <span>{Hover === box.number ? <p className="w-16 h-16 border-solid border-4 border-green-600">Wow</p> : ""}</span> {/* {Hover && ( )} */} </div> ))} </div> </div> ); }; export default App;

Estoy flotando en el segundo cuadro y aparece el modal.

¿Es esto lo que estás buscando?

ingrese la descripción de la imagen aquí

Cosas que he cambiado:

  • Valor numérico en la matriz de datos
  • UseState a nulo

¿Por qué lo cambié?

La matriz comienza desde 0, así que estoy marcando la box.number El número es igual al número de índice (que está presente en Hover). Si es así, aparecerá el cuadro.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda