>source

저는 날씨 앱에서 작업 중이며 useState 비동기식으로 어려움을 겪고 있습니다. 나는 그것이 useState 함수에서 콜백으로 해결될 수 있다는 것을 stackoverflow에서 읽었습니다. 그래서 시도해 보았지만 아무것도 바뀌지 않았습니다. 문제는 제출 버튼을 클릭할 때 상태가 API에서 데이터를 수신해야 하지만 데이터를 생성하지 못하고 내 상태에서 null이 발생한다는 것입니다. 무엇이 잘못되었고 pls가 내 code에 따라 저를 도울 수 있다면. P.S 중요하지 않은 일부 기능을 놓쳤습니다.

const useForecast= ()=> {
    const [forecast, setForecast]= useState(null);
    const gatherForecastData= async data=> {
        const currentDay= await getCurrentDayForecast(data.consolidated_weather[0], data.title);
        const currentDayDetails= await getCurrentDayDetailedForecast(data.consolidated_weather[0]);
        await setForecast(()=> {
          return { currentDay, currentDayDetails};
          });
        setLoading(false);
    };
    //MAIN FUNC AND TROUBLE IS HERE
    const submitRequest= async location=> {
        setLoading(true);
        setError(false);
        const response= await getWoeid(location);
        if (!response?.woeid) return;
        const data= await getForecastData(response.woeid);
        if (!data) return;
        await gatherForecastData(data);
        console.log(data);
        //DATA SHOWS OK
        console.log(forecast);
        //SHOWS INITIAL STATE FOR THE FIRST SUBMIT
    };
}

  • 이전 vim: 별칭 yank 및 xclip에 복사
  • 다음 android : Google Play 앱 거부 -핵심 기능이 아님