gpt4 book ai didi

javascript - 为什么来 self 的 api 的数据只显示一次,当我刷新页面时它给出了一个错误

转载 作者:行者123 更新时间:2023-12-05 04:43:11 25 4
gpt4 key购买 nike

我正在做一个项目,该项目显示随机的食物名称和该食物的图像。我无法弄清楚为什么数据只在页面上显示一次,并且在我刷新页面后,它会给出错误“未捕获的类型错误:recipeList.recipes 未定义”。

这是我的 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`;

console.log(URL);

function Home() {
const [food, setFood] = useState({});

useEffect(() => {
axios
.get(URL)
.then(function (response) {
setFood(response.data);
})
.catch(function (error) {
console.warn(error);
});
}, []);

return (
<main>
<Recipe recipeList={food} />
</main>
);
}

export default Home;

这是我的 Recipe.js 组件

import React from "react";

function Recipe({ recipeList }) {
return (
<div className="recipeCard">
<h1>{recipeList.recipes[0].title}</h1>
<img src={recipeList.recipes[0].image} alt="Food" />
</div>
);
}

export default Recipe;

最佳答案

你应该验证你的数据 food 是否为空或 null,这里有一个例子:

<main>
{food &&
<Recipe recipeList={food} />}
</main>

首先你需要在useEffect中加载数据

useEffect(() => {
const loadData=()=>{
axios
.get(URL)
.then(function (response) {
setFood(response.data);
})
.catch(function (error) {
console.warn(error);
});
}
if(!food){ // just for dont load empty data -->setFood(response.data)
loadData()
}
}, []);

当您重新加载页面时,您正在加载空数据

关于javascript - 为什么来 self 的 api 的数据只显示一次,当我刷新页面时它给出了一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69684706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com