Работа с API в REACT?

Получаю данные из API в хуке useEffect, пытаюсь эти данные вставить в useState, выдает ошибку "datas is not defined". Как решить данную проблему? Как передать данные из useEffect в useState?

import {useState, useEffect} from 'react';

import './bottom.css';
import OneDayComp from '../one-day-component/oneDayComp.jsx';


function Bottom(){

   useEffect(()=>{
      fetch(`https://api.openweathermap.org/data/2.5/onecall?lat=58.0105&lon=56.2502&units=metric&exclude=minutely,hourly&lang=RU&appid=7590b58fc327c0300af42791a4390329`)
      .then(response => response.json())
      .then(data =>{    
         console.log(data.daily)

         const datas = data.daily
         console.log(datas)
         
      }, [])
   })

   let [datasDays, setDatasDays] = useState(datas)

   const products = datasDays.map((day)=>{
      return (
         <OneDayComp day={day}/>
      )
   })


   return (
      <div className="weather-bottom">
         <div className="days">
            {products}
         </div>
      </div>
   );
}

export default Bottom;
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
Dasihub
@Dasihub
Ты та еще гавнокодер


let [datasDays, setDatasDays] = useState([])

useEffect(()=>{
      fetch(`https://api.openweathermap.org/data/2.5/onecall?lat=58.0105&lon=56.2502&units=metric&exclude=minutely,hourly&lang=RU&appid=7590b58fc327c0300af42791a4390329`)
      .then(response => response.json())
      .then(data =>{    
         setDatasDays(data.daily)
      }, [])
   })



Попробуй это

P.s ты должен понять чтобы в React произошел рендер нужно изменить стейт, а ты неправильно меняешь стейт.
В React у каждого стейта есть своя функция, твоем случае чтобы поменять этот стейт datasDays ты должен перезаписать с помощью функции дать аргумент в эту функциюsetDatasDays
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы