Не удается отобразить информацию с помощью axios и Useefect

#reactjs #axios #use-effect

#реагирует на #аксиос #эффект использования

Вопрос:

Я пытаюсь отобразить информацию, которую я получил с сервера погоды. Я 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 () =gt; {  await axios.get(`${REQUEST_URL}/1103816`)  .then(res =gt; {  const weatherData = res.data;  setData(weatherData);  })  }, [])    return (  lt;div className="mx-auto page--container"gt;  {!data === "" amp;amp;  lt;Cardgt;  lt;Card.Bodygt;  lt;Card.Titlegt;This is Weather Cardlt;/Card.Titlegt;  {/* Location */}  lt;Card.Textgt;Min degree: {data.consolidated_weather[0].min_temp}lt;/Card.Textgt;   {/* Maximum degree */}  lt;Card.Textgt;Max degree: {data.consolidated_weather[0].max_temp}lt;/Card.Textgt;  {/* Minimum degree */}  lt;Card.Textgt;Location: {data.parent.title}lt;/Card.Textgt;  lt;/Card.Bodygt;  lt;/Cardgt;  }  {data === "" amp;amp; lt;pgt;Program cannot progresslt;/pgt;}  lt;/divgt;  ) }  export default Page   

Комментарии:

1. Пожалуйста, укажите результат console.log в вопросе.

Ответ №1:

Вам не нужно использовать then при использовании async await , пожалуйста, попробуйте обновить свой useEffect as

 useEffect(() =gt; {  async function getData() {  let res = await axios.get(`${REQUEST_URL}/1103816`);  setData(res.data);  }  getData()  }, []);  

Ответ №2:

Измените свой эффект использования следующим образом:

 useEffect(() =gt; {  (async () =gt; {  const response = await axios.get(`${REQUEST_URL}/1103816`);  if (response.data) {  setData(weatherData);  }  }); });