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

218
Visualizações
Tengo problemas para mostrar mis datos de API en mi aplicación de reacción

Estoy creando una aplicación de reacción que obtiene datos aleatorios de alimentos de spoonacular.com. Estoy tratando de mostrar el nombre del título de la comida en la página, pero no aparece y, además, ¿por qué sigue obteniendo un montón de datos diferentes como se muestra en la imagen de console.log aunque especifiqué la cantidad de datos? para buscar como 1 en la URL

Este es mi Home.js

 import React, { useEffect, useState } from "react"; import axios from "axios"; import Recipe from "../components/Recipes"; const URL = `https://api.spoonacular.com/recipes/random?apiKey=${APIKey}&number=1`; function Home() { const [food, setFood] = useState({}); useEffect(() => { axios .get(URL) .then(function (response) { setFood(response.data); console.log(food); }) .catch(function (error) { console.warn(error); }); }, [food]); return ( <main> <Recipe recipeList={food} /> </main> ); } export default Home;

y este es mi componente Recipe.js

 import React from "react"; function Recipe({ recipeList }) { return ( <div className="recipeCard"> <h1>{recipeList.title}</h1> </div> ); } export default Recipe;

y esta es la imagen de la consola cuando registro los resultados obtenidos de la API (todos son datos de alimentos diferentes, pero solo quería obtener 1 dato de alimentos y mostrarlo en la página) ingrese la descripción de la imagen aquí

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

0

Así es, obtienes 1 receta aleatoria, pero useEffect funciona cada vez que actualizas el estado de la food , por lo que tienes un bucle infinito. Simplemente elimine food de la dependencia useEffect . También es mejor verificar si existe la lista de recetas para que no obtenga un error de título faltante. Esto debería funcionar como se esperaba: Home.js:

 import React, { useEffect, useState } from "react"; import axios from "axios"; import Recipe from "../components/Recipes"; const URL = `https://api.spoonacular.com/recipes/random?apiKey=${APIKey}&number=1`; function Home() { const [food, setFood] = useState(null); useEffect(() => { axios .get(URL) .then(function (response) { setFood(response.data); console.log(food); }) .catch(function (error) { console.warn(error); }); }, []); return ( <main> <Recipe recipeList={food} /> </main> ); } export default Home;

Receta.js:

 import React from "react"; function Recipe({ recipeList }) { if(!recipeList) return <></> return ( <div className="recipeCard"> <h1>{recipeList?.title}</h1> </div> ); } export default Recipe;
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