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

148
Vistas
Cambie el estilo del elemento individual en el componente React que devuelve múltiples elementos repetidos

Estoy renderizando un componente Canvas en reaccionar, que devuelve una lista de elementos <rect> , lo que estoy tratando de lograr es cambiar el color del <rect> en el que se hizo clic solamente, sin embargo, en mi código cada vez que hago clic en uno de los elementos , la lista completa de elementos se actualiza, ¿cómo puedo actualizar solo el elemento <rect> en el que se hizo clic?

a continuación está mi código:

 import { useState } from "react"; import styles from "./Canvas.module.css"; let data = [ { id: "1", x: "50", y: "20", }, { id: "2", x: "90", y: "20", }, { id: "3", x: "130", y: "20", }, ]; const Canvas = () => { const [redRectangle, setRedRectangle] = useState(); const setColorHandler = () => { setRedRectangle(styles.rect); }; let arr = data.map((element) => { return ( <rect className={redRectangle} key={element.id} width="30" height="4" x={element.x} y={element.y} onClick={setColorHandler} /> ); }); return ( <svg width="800" height="600" id="svg"> {arr} </svg> ); }; export default Canvas;

antes de ejecutar el código

ingrese la descripción de la imagen aquí

después de hacer clic en uno <rect>

ingrese la descripción de la imagen aquí

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

0

En primer lugar, cree un componente separado para rect. Después de crearlo, agregue un estado de nivel de componente al componente rect, especificando el color. Luego asigne el componente rect en la función de lienzo.

Después del mapeo, cree una función para cambiar la clase de un solo componente rect usando el id. Siempre que llame a la función, pase la identificación del elemento como parámetro a la función. Después de hacer eso, use un bucle forEach para verificar si el ID de elemento recibido del parámetro es igual al ID de elemento actual. Y si es igual, cambie el estado de ese componente específico.

Gracias😊

about 4 years ago · Juan Pablo Isaza Denunciar

0

Está sucediendo porque U está asignando un nombre de clase a todos los elementos. Al hacer clic en uno de ellos, ese nombre de clase se cambia y todos se actualizan. Lo que debes hacer es esto: 1- No necesitas que el estado lo elimine. 2-Define otro nombre de clase en tu archivo CSS llamado cambiado a rojo y dale el estilo que quieras. 3-En su función de controlador de clic, cambie el nombre de clase como se muestra a continuación:

 const setColorHandler = (e)=> { e.currentTarget.classList.toggle("changed-to-red") }
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