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

163
Vistas
Elemento de botón en matriz con propiedad onClick para cambiar el estado del botón específico en el que se hace clic

Tengo una serie de botones que se procesan usando .map para imprimir las filas en la tabla de datos. Cada fila tiene un botón que activa la ventana emergente del panel Editar. El problema que tengo actualmente es cuando se hace clic en un botón, el panel Editar en todas las filas.

El código:

 const [showEdit, setShowEdit] = useState([]); <tbody> {appSettingsList.map((appSettings, i) => ( <tr key={i}> <td>{appSettings.Name}</td> <td>{appSettings.BackgroundColor}</td> <td>{appSettings.FontSize}</td> <td>{appSettings.FontFamily}</td> <td>{appSettings.Theme}</td> <td>{appSettings.NavigationBar}</td> <td className="action-column"> <button key={i} className="button-green" onClick={() => setShowEdit(!showEdit)} > Edit </button> </td> <td>{showEdit ? <EditApplicationSettings /> : null}</td> </tr> ))} </tbody>

¿Cómo puedo hacer que cada botón tenga un estado diferente?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Su estado debe ser el índice de la fila activa

 const [activeIndex, setActiveIndex] = useState(null); <tbody> {appSettingsList.map((appSettings, i) => ( <tr key={i}> <td>{appSettings.Name}</td> <td>{appSettings.BackgroundColor}</td> <td>{appSettings.FontSize}</td> <td>{appSettings.FontFamily}</td> <td>{appSettings.Theme}</td> <td>{appSettings.NavigationBar}</td> <td className="action-column"> <button key={i} className="button-green" onClick={() => setActiveIndex(i)} > Edit </button> </td> <td>{activeIndex === i ? ( <button key={i} className="button-green" onClick={() => setActiveIndex(null)} > Edit </button> ) : ( <button key={i} className="button-green" onClick={() => setActiveIndex(i)} > Edit </button> )}</td> </tr> ))} </tbody>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe manejar la lógica de edición para cada fila de forma independiente.

  1. Cree un componente TableRow alternando la lógica de vista de edición.
 const TableRow = ({ appSettings, i }) => { const [showEdit, setShowEdit] = useState([]); return ( <tr key={i}> <td>{appSettings.Name}</td> <td>{appSettings.BackgroundColor}</td> <td>{appSettings.FontSize}</td> <td>{appSettings.FontFamily}</td> <td>{appSettings.Theme}</td> <td>{appSettings.NavigationBar}</td> <td className="action-column"> <button key={i} className="button-green" onClick={() => setShowEdit(!showEdit)} > Edit </button> </td> <td>{showEdit ? <EditApplicationSettings /> : null}</td> </tr> ); };
  1. TableRow sobre los elementos de TableRow.
 <tbody> {appSettingsList.map((appSettings, i) => ( <TableRow appSettings={appSettings} i={i} /> ))} </tbody>
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