No Response From Fetch Api In React Useeffect Hook
I am trying to use the fetch API in React useEffect hook to make a get request but I am not able to Print my response as expected. I am only getting an empty array as the response.
Solution 1:
setState is asynchronous so you can't see the updated value in the function where you set a new value, where you console.log(eventData), you need to do console.log(events) to see what you get from the response
And, by the way, I recommend you to set loading at true by default because you do your request when the component mounts const [loading,setLoading] = useState(true);, then you can remove the setLoading(true); in the function
functionApp() {
  const [eventData,setEventData] = useState([]);
  const [loading,setLoading] = useState(true);
  useEffect(()=>{
    const fetchData = async()=>{
      const res = awaitfetch('https://eonet.sci.gsfc.nasa.gov/api/v2.1/events');
      const {events} = await res.json();
    console.log(events)
      setEventData(events);
      setLoading(false);
    }
    fetchData();
  },[])
return (
    <div> 
      {!loading ? <MapeventData={eventData}/> : <Loader/>}
    </div>
  );
}
  
exportdefaultApp;
Solution 2:
The problem is that you're trying to get the value of eventData before the state is updated move console.log(eventData) outside useEffect like so
functionApp() {
  const [eventData,setEventData] = useState([]);
  const [loading,setLoading] = useState(false);
  useEffect(()=>{
    const fetchData = async()=>{
      setLoading(true);
      const res = awaitfetch('https://eonet.sci.gsfc.nasa.gov/api/v2.1/events');
      const {events} = await res.json();
      setEventData(events);
      setLoading(false);
    }
    fetchData();
  
  },[])
  console.log(eventData) //Herereturn (
    <div> 
      {{!loading ? <MapeventData={eventData}/> : <Loader/>}}
    </div>
  );
}
  
exportdefaultApp;
Post a Comment for "No Response From Fetch Api In React Useeffect Hook"