Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

92
Visualizações
El componente React no se procesa después de actualizar el estado por useState

Quiero actualizar un objeto de estado userInfo que contiene una matriz llamada trabajo que es una matriz de objetos

La información de usuario de mi objeto de base de datos se ve así

 { "_id":"61a6a1d64707c03465eae052", "fullName": "Md Nurul Islam", "works": [ { "isEditing": false, "_id": "61a6a1d64707c03465eae053", "company": "Amazon Logistics", "position": "Sortation Associate", "isCurrent": true }, { "isEditing": false, "_id":"61a6a1d64707c03465eae054", "company": "The Rani Indian Takeway", "position": "Customer Service Assistant", "isCurrent": false, } ] }

Pero no quiero actualizar la base de datos, solo quiero actualizar la información de usuario del estado en la interfaz para ir a editar el estado de ánimo, para esto, cuando el usuario haga clic en editar junto a la sección de trabajo, las propiedades están editando se alternarán.

A continuación se muestra mi código

 const [userInfo, setUserInfo] = useState(user); const workToggleHandler = (work) => { setUserInfo((prev) => { prev.works.map((p) => { if (p._id === work._id) { p.isEditing = !p.isEditing; } return p; }); return prev; });

Con este código, mi objeto de estado se actualiza, pero mis componentes no se vuelven a renderizar.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

puede poner en useEffect cuando se actualice un estado particular, entonces ese efecto llamará

 useEffect(()=>{ your code will go here }[userInfo]),
about 4 years ago · Juan Pablo Isaza Relatório

0

React no mira los datos del objeto sino el puntero del objeto. Dado que esto no se cambia (solo se edita "anterior", no hay ningún objeto nuevo con una nueva dirección de objeto), no se vuelve a representar. Una solución sería copiar el objeto.

 let newUserInfo = Object.assign({}, prev); newUserInfo.works.map((p) => { if (p._id === work._id) { p.isEditing = !p.isEditing; } return p; }); return newUserInfo;

Descargo de responsabilidad: tal vez sea necesaria una copia profunda....

about 4 years ago · Juan Pablo Isaza Relatório

0

Acabo de cambiar mi código en la función workToggleHandler y funciona completamente como quiero. Debajo de mi código

 const [userInfo, setUserInfo] = useState(user); const workToggleHandler = (work) => { setUserInfo({ ...userInfo, works: userInfo.works.map((p) => { if (p._id === work._id) { p.isEditing = !p.isEditing; } return p; }), }); };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda