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

196
Visualizações
No se puede actualizar el estado después de obtener la solicitud

Estoy tratando de crear una aplicación donde obtengo datos de una API de Graphql y actualizo el estado después de obtenerlos, pero después de la solicitud exitosa obtengo los datos pero no puedo actualizar el estado con esos datos. cuando registro en la consola los datos de respuesta, muestra la matriz con los datos requeridos, pero cuando actualizo el estado y la consola registra el estado, muestra una matriz vacía.

Necesito actualizar el estado para usarlo en el componente, cuando estoy haciendo esto, arroja un error de que currList no está definido.

Aquí hay fotos del código y la consola.

 export default function App() { const [search, setSeach] = useState(""); const [currList, setCurrList] = useState([]); const fetchShips = async () => { const response = await request(gql` { ships { name home_port image } } `); console.log("request response", response.data); setCurrList(response.data); console.log("currlist:", currList); }; useEffect(() => { fetchShips(); }, [currList]); const Searchitems = (event) => { setSeach(event.target.value); setCurrList( currList.filter((item) => { return item.name.includes(search) || item.home_port.includes(search); }) ); }; return ( <div className="App"> <div className="container"> <header></header> <div className="body"> <input type="text" id="search" value={search} onChange={Searchitems} className="input" placeholder="Search Ships" /> <p>Total Count: {currList.length}</p> <div className="ships"> {currList.map((item, index) => { return ( <Ship key={index} name={item.name} port={item.port} img={item.image} /> ); })} </div> </div> </div> </div> ); }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

el Estado se actualiza pero no cuando el código se está ejecutando, por eso registra que el estado es una matriz vacía, intente consolar. Regístrelo una vez más y verá que hay algo en la Lista.

over 4 years ago · Santiago Trujillo Relatório

0

Eso es normal, todo está sucediendo de forma asíncrona. React activará una nueva representación una vez que se actualice su currList y obtendrá su nuevo valor. Si desea escuchar este cambio, debe usar useEffect con currList como dependencia.

 useEffect(() => { console.log("List is updated", currList); }, [currList]);
over 4 years ago · Santiago Trujillo Relatório

0

La función fetchShips tiene un cierre sobre la variable de estado currList que se relaciona con una llamada de representación específica, por lo que cuando lo registra después de llamar a setCurrList, le muestra el estado anterior, no el estado actualizado, puede iniciar sesión en useEffect para ver los cambios.

over 4 years ago · Santiago Trujillo 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