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

129
Vistas
setState no funciona en los ganchos de reacción cuando se usa el mapa

Lo que estoy tratando de hacer es: después de manipular los datos de cada usuario en la matriz de "usuarios", quiero agregarlo a un estado llamado newUser, luego empujar ese nuevo usuario a una matriz llamada newUsersList. ¿Cómo puedo hacer eso? (la matriz de usuarios aquí está simplificada)

 export default function App() { const users = [ { nom: 'name 1', prenom: 'last name 1', }, { nom: 'name 2', prenom: 'last name 2', }, { nom: 'name 3', prenom: 'last name 3', }, { nom: 'name 4', prenom: 'last name 4', }, { nom: 'name 5', prenom: 'last name 5', }, { nom: 'name 6', prenom: 'last name 6', }, ]; const [newUser, setNewUser] = useState({}); const [newUsersList, setNewUsersList] = useState([]); const handleClick = () => { users.map((user) => { setNewUser( { firstName: user.nom, lastName: user.prenom, }, newUsersList.push(newUser), ); //newUsersList.push(newUser) }); }; // useEffect(() => { // newUsersList.push(...users, newUser) // }, [newUser]) return ( <div className="App"> <button onClick={handleClick}> Add Users </button> {newUsersList.map((user) => { return <h6> user name : {user.firstName} </h6>; })} </div> ); }

El problema aquí es que la función setNewUser no funciona y, como puede ver, probé 3 soluciones:

  1. ejecutando newUsersList.push(newUser) después de ejecutar setNewUser
  2. agregó newUsersList.push (newUser) como un segundo parámetro para setNewUser
  3. llamado newUsersList.push(newUser) dentro de useEffect cuando cambia el estado de newUser

Ninguna de estas soluciones está funcionando.

Código ejecutable: https://codesandbox.io/s/vigorous-joana-82qcc?file=/src/App.js:69-1375

Tenga en cuenta que este es un código extraído y el original tiene datos json más complicados que estoy manipulando. Y me quedé atascado al cambiar el estado del newUser.

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

0

Intente cambiar handleClick a:

 const handleClick = () => { updatedUsers = users.map((user) => ({ firstName: user.nom, lastName: user.prenom })) setNewUsersList([...newUsersList,...updatedUsers]); };

Dos notas: primero, nunca cambie un estado directamente, pero siempre use su setter. En segundo lugar, no parece que necesites newUser estado de usuario en absoluto.

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