使用 axios 和 useEffect 无法显示信息
Posted
技术标签:
【中文标题】使用 axios 和 useEffect 无法显示信息【英文标题】:Cannot display information using axios and useEffect 【发布时间】:2022-01-07 22:04:57 【问题描述】:我正在尝试显示从天气服务器检索到的信息。我console.log(data)
它可以工作,但我无法在界面上显示它。我猜这个问题可能与我使用异步和等待的方式有关。有谁知道潜在的问题是什么?
import React, useState, useEffect from 'react'
import Card from 'react-bootstrap/Card'
import 'bootstrap/dist/css/bootstrap.min.css';
import './Page_Styled.css'
import axios from 'axios';
const BASE_URL = "https://www.metaweather.com/api/location";
const CROSS_DOMAIN = "https://the-ultimate-api-challenge.herokuapp.com"
const REQUEST_URL = `$CROSS_DOMAIN/$BASE_URL`
function Page()
const [data, setData] = useState("");
useEffect(async () =>
await axios.get(`$REQUEST_URL/1103816`)
.then(res =>
const weatherData = res.data;
setData(weatherData);
)
, [])
return (
<div className="mx-auto page--container">
!data === "" &&
<Card>
<Card.Body>
<Card.Title>This is Weather Card</Card.Title>
/* Location */
<Card.Text>Min degree: data.consolidated_weather[0].min_temp</Card.Text>
/* Maximum degree */
<Card.Text>Max degree: data.consolidated_weather[0].max_temp</Card.Text>
/* Minimum degree */
<Card.Text>Location: data.parent.title</Card.Text>
</Card.Body>
</Card>
data === "" && <p>Program cannot progress</p>
</div>
)
export default Page
【问题讨论】:
请在问题中包含console.log
的输出。
【参考方案1】:
使用async await
时,不需要使用then
请尝试将您的useEffect
更新为
useEffect(() =>
async function getData()
let res = await axios.get(`$REQUEST_URL/1103816`);
setData(res.data);
getData()
, []);
【讨论】:
【参考方案2】:像这样改变你的 useEffect:
useEffect(() =>
(async () =>
const response = await axios.get(`$REQUEST_URL/1103816`);
if (response.data)
setData(weatherData);
);
);
【讨论】:
以上是关于使用 axios 和 useEffect 无法显示信息的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 ReactJs、Axios、Redux 渲染/显示从 api 获取的数据
我想在useEffect react Js中使用带有foreach的axios,但它给了我(无法读取属性Symbol(Symbol.iterator)错误?
在 useEffect 挂钩中使用 axios 取消令牌时如何修复失败的测试
Axios 没有使用 useEffect() (React Js) [重复]
React Hook useEffect :使用 axios 和 async await .api 获取数据,调用连续相同的 api