Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

293
Views
Why's my response being executed more than once with the correct data instead of just only once with useEffect()?

I know having an empty dependency [] executes useEffect() only once but when it does execute only once with an empty dependency [] - it logs an empty array in the console.

When it's not empty, it just continuously logs with no end in sight (with the correct data). I'm not sure why it won't log it correctly just one time with the data I need to use.

What am I doing wrong?

Code below:

const [uploadsData, setUploadsData] = useState([]);

const getUploads = async () => {
    const headers = {
        "Accept": 'application/json',
        "Authorization": `Bearer ${authToken}`
    }

    await axios.get('http://localhost:8000/api/get-uploads', {headers})
        .then(resp => {
            console.log(resp);
            setUploadsData([resp.data]);
        }).catch(error => {
        console.log(error);
    });
};

useEffect(() => {
    getUploads();
    // logs empty array in the console if dependency array is empty
    // logs correct data when dependency array isn't empty - i.e. [uploadsData]
    console.log(uploadsData);
}, []);
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

That's because you are referring the uploadsData inside the useEffect hook's callback and in order to get correct console log, you should run that code in a separate useEffect hook.

useEffect(() => {
    getUploads();
}, []);

useEffect(() => {
    // logs empty array in the console if dependency array is empty
    // logs correct data when dependency array isn't empty - i.e. [uploadsData]
    console.log(uploadsData);
}, [uploadsData]);

In this way, the getUploads function is called only once and it outputs correct uploadData to the browser console.

about 4 years ago · Juan Pablo Isaza Report

0

The first time it will print empty array since update state is async in React.

GIVEN that you add uploadsData to your dependency array. WHEN your effect runs, it updates uploadsData THEN the effect will be triggered again.

This will go on forever!

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!