I don't understand why my useEffect() React function can't access my Component's state variable. I'm trying to create a log when a user abandons creating a listing in our app and navigates to another page. I'm using the useEffect() return method of replicating the componentWillUnmount() lifecycle method. Can you help?
Code Sample
  let[progress, setProgress] = React.useState(0)
  ... user starts building their listing, causing progress to increment ...
  console.log(`progress outside useEffect: ${progress}`)
  useEffect(() => {
    return () => logAbandonListing()
  }, [])
  const logAbandonListing = () => {
    console.log(`progress inside: ${progress}`)
    if (progress > 0) {
      addToLog(userId)
    }
  }
Expected Behavior
The code would reach addToLog(), causing this behavior to be logged.
Observed Behavior
This is what happens when a user types something into their listing, causing progress to increment, and then leaves the page.
- The 
useEffect()method works perfectly, and fires thelogAbandonListing()function - The first 
console.log()(aboveuseEffect) logs something greater than 0 for theprogressstate - The second 
console.log()logs 0 for theprogressstate, disabling the code to returntruefor theifstatement and reach theaddToLog()function. 
Environment
- Local dev environment of an app built with Next.js running in Firefox 76.0.1
 - nextjs v 8.1.0
 - react v 16.8.6
 
I'd really appreciate some help understanding what's going on here. Thanks.