【发布时间】:2021-09-22 19:52:09
【问题描述】:
我正在尝试使用 react 来获取 api 信息(见下文),但它没有返回任何值,但当我使用不同的链接时它可以工作。不确定第二个链接的问题是什么。如何使第二个链接工作或有不同的方法?
import React, { useState, useEffect } from "react";
import axios from "axios";
export default function App() {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
getData()
}, []);
async function getData() {
// await axios("https://randomuser.me/api") // <----- this works
await axios("https://api.sampleapis.com/wines/reds") // <----- this does not work
.then((response) => {
setData(response.data);
console.error("No Error fetching data: fds");
})
.catch((error) => {
console.error("Error fetching data: ", error);
setError(error);
})
.finally(() => {
setLoading(false);
});
}
if (loading) return "Loading...";
if (error) return "Error!"; //dfdsaf
return ( <>
{/* <img src={data.results[0].picture.medium} alt="random user" /> */}
<pre>{JSON.stringify(data, null, 2)}</pre>
</>
); }
【问题讨论】:
-
请更详细地描述究竟是什么不起作用。直接点击这两个 URL 我会看到数据,所以我怀疑您没有正确处理响应值。
-
与您的问题无关但只是让您知道,您正在使用 await 使您的代码同步,您不需要“then”块。改为这样做: const wineData = await axios("api.sampleapis.com/wines/reds"); setData(wineData.data)
-
嗨,是的,我对反应和获取数据非常陌生。这是我找到的一些在线代码,我只是输入了一个新网址。如何进行调试并查看您看到的数据?
-
在浏览器 (Chrome) 中,我只是突出显示了 URL,右键单击,然后选择“转到 'https:// .........'”,然后 JSON 在新窗口/标签。您还可以在
axios行上放置一个调试器并检查它,或使用控制台日志。
标签: javascript reactjs fetch