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

151
Vistas
Mi función mecanografiada no funciona sin useState no utilizado

Tengo dos funciones simples para agregar y eliminar elementos de la matriz

La función isInComparator () debe verificar si el elemento basado en la identificación leída del valor de la casilla de verificación está en la matriz o no y necesito cambiar el título de la casilla de verificación a "eliminar" o "agregar"

Funciona con este código, pero cuando elimino setLabelValue(value); fila, deja de funcionar y no entiendo por qué, porque ahora ni lo estoy usando

 export const ProductItemBox = ({ product, }: ProductProps): JSX.Element => { const [labelValue, setLabelValue] = useState(""); let idsToCompare: string[] = [] || ""; let productId: string; let isChecked = false; let value = ""; const handleComparator = (productId: string) => { if (idsToCompare.includes(productId)) { idsToCompare = idsToCompare.filter((e) => e !== productId); } else { idsToCompare.push(productId); } setLabelValue(value); }; const isInComparator = (productId: string) => { if (idsToCompare.includes(productId)) { value = "remove"; isChecked = true; } else { value = "add"; isChecked = false; } return isChecked; }; <li key={product.productId}> <div className="comparator-form"> <input type="checkbox" id={product.productId} value={product.productId} defaultChecked={isInComparator(product.productId)} onChange={() => handleComparator(product.productId)} /> <label htmlFor={product.productId}>{value}</label> </div> </li> ); };
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Esto sucede porque la configuración del estado hace que se vuelva a procesar el componente y, cuando no lo configura, el componente no se vuelve a procesar. Debe hacer que idsToCompare sea una variable de estado y configurarla con setState, no solo empujar a la matriz

Puedes aprender todo lo que necesitas saber sobre el estado aquí

about 4 years ago · Juan Pablo Isaza Denunciar

0

Como @Marat dijo anteriormente, solo le brindo la misma solución pero en detalles.

 export const ProductItemBox = ({ product, }: ProductProps): JSX.Element => { const [labelValue, setLabelValue] = useState(""); // as you can use useState hook with typeScript rules const [idsToCompare,setIdsToCompare ]= useState<string[]>([]); // let idsToCompare: string[] = [] || ""; let productId: string; let isChecked = false; let value = ""; const handleComparator = (productId: string) => { if (idsToCompare.includes(productId)) { idsToCompare = idsToCompare.filter((e) => e !== productId); } else { // set the idsToCompare setIdsToCompare(oldArray => [...oldArray, productId]); // idsToCompare.push(productId); } // setLabelValue(value); }; const isInComparator = (productId: string) => { if (idsToCompare.includes(productId)) { value = "remove"; isChecked = true; } else { value = "add"; isChecked = false; } return isChecked; }; <li key={product.productId}> <div className="comparator-form"> <input type="checkbox" id={product.productId} value={product.productId} defaultChecked={isInComparator(product.productId)} onChange={() => handleComparator(product.productId)} /> <label htmlFor={product.productId}>{value}</label> </div> </li> ); };

Déjame saber si esto resuelve el problema.

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