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

155
Visualizações
Reaccionar, actualizar el estado en un bucle

Me gustaría actualizar un estado cada vez que recibo una promesa, en un bucle. Pero mi estado solo muestra la última promesa. Supongo que es porque, como el estado establecido es asíncrono, usa el Mapa disponible antes de las actualizaciones de estado anteriores. ¿Cómo puedo lograr eso sin usar Promise.all?

 const [dataList, setDataList] = useRef(new Map()) useEffect(() => { ids.forEach(id => { getData(id).then(data => { if (data) { setDataList(dataList.set(id, data)) } }) }) }, [ids])
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Está relacionado con cómo funciona la reacción. Espera todas las llamadas de setState en un state específico y elige la última. Si desea evitar este comportamiento, use una función de actualización que tomará el state anterior y devolverá uno nuevo. En tu caso así:

 const [dataList, setDataList] = useRef(new Map()) useEffect(() => { ids.forEach(id => { getData(id).then(data => { if (data) { setDataList(dataList => { let newDataList = new Map(dataList); newDataList.set(id, data); return newDataList; }) } }) }) }, [ids])
about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que puedes lograrlo con async await de esta manera:

 useEffect(() => { ids.forEach(id => { async function fetchMyAPI() { const data = await getData(id); if (data) { setDataList(dataList.set(id, data)) } } fetchMyAPI() }) }, [ids])
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