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

172
Visualizações
Reaccionar estado de actualización dentro del bucle for

Cómo funciona useState bajo el capó si lo pongo dentro del bucle. Del siguiente fragmento de código obtengo una lista de un solo elemento. console.log(names) imprime 3 veces el valor de names :

primer procesamiento -> nulo

segundo y último render -> matriz completa (10 elementos)

Sé que setNames debe colocarse fuera del bucle for, pero me pregunto por qué representa la matriz 3 veces (esperaba solo 2) y por qué obtengo la lista ul/li de solo 1 elemento en lugar de 10.

 const {useState, useEffect} = React; const url = 'https://api.github.com/users'; const Example = () => { let [names, setNames] = useState(null) let list = [] const getNames = async () => { let response = await fetch(url) let users = await response.json() for (let i = 0; i < 10; i++) { list.push(users[i].login) setNames(list) } } useEffect(() => { getNames() }, []) console.log(names); return ( <ul> {names && names.map((item, index) => { return ( <li key={index}>{item}</li> ) })} </ul> ) }; ReactDOM.render( <Example/>, document.getElementById("react") );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script> <div id="react"></div>

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

0

Prueba esto. Agregue usuarios primero en una lista y después del ciclo, actualice el estado.

 const getNames = async() => { const response = await fetch(url) const users = await response.json() let names = [] for (let i = 0; i < 10; i++) { names.push(users[i].login) } setNames(names) }

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