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

1.1K
Visualizações
¿Cómo llamar a una función asíncrona dentro de UseEffect() en React?

Me gustaría llamar a una función asíncrona y obtener el resultado de mi UseEffect.

Los ejemplos de fetch api que encontré en Internet se realizan directamente en la función useEffect. Si mi URL cambia, debo parchear todas mis búsquedas.

Cuando lo intenté, recibí un mensaje de error.

Este es mi código.

 async function getData(userId) { const data = await axios.get(`http://url/api/data/${userId}`) .then(promise => { return promise.data; }) .catch(e => { console.error(e); }) return data; } function blabla() { const [data, setData] = useState(null); useEffect(async () => { setData(getData(1)) }, []); return ( <div> this is the {data["name"]} </div> ); }

index.js:1375 Advertencia: una función de efecto no debe devolver nada más que una función, que se usa para la limpieza. Parece que escribiste useEffect(async () => ...) o devolviste una Promesa. En su lugar, escribe la función asíncrona dentro de tu efecto y llámala inmediatamente:

 useEffect(() => { async function fetchData() { // You can await here const response = await MyAPI.getData(someId); // ... } fetchData(); }, [someId]); // Or [] if effect doesn't need props or state
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Cree una función asíncrona dentro de su efecto que espere el getData(1) y luego llame a setData() :

 useEffect(() => { const fetchData = async () => { const data = await getData(1); setData(data); } fetchData(); }, []);
over 4 years ago · Santiago Trujillo Relatório

0

Si lo está invocando de inmediato, es posible que desee usarlo como una función anónima:

 useEffect(() => { (async () => { const data = await getData(1); setData(data); })(); }, []);
over 4 years ago · Santiago Trujillo Relatório

0

Sería mejor si hiciera lo que sugiere la advertencia: llame a la función asíncrona dentro del efecto.

 function blabla() { const [data, setData] = useState(null); useEffect(() => { axios.get(`http://url/api/data/1`) .then(result => { setData(result.data); }) .catch(console.error) }, []); return ( <div> this is the {data["name"]} </div> ); }

Si desea mantener la función api fuera del componente, también puede hacer esto:

 async function getData(userId) { const data = await axios.get(`http://url/api/data/${userId}`) .then(promise => { return promise.data; }) .catch(e => { console.error(e); }) return data; } function blabla() { const [data, setData] = useState(null); useEffect(() => { (async () => { const newData = await getData(1); setData(newData); })(); }, []); return ( <div> this is the {data["name"]} </div> ); }
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