0

when I'm trying to see my status after change to offline, in line 6 with 'console.log(status)' prints 'true' why this happening?

Here is my Code

const useNetwork = (consolePrint) => {
  const [status, setStatus] = useState(navigator.onLine);

  const networkChange = () => {
    setStatus(navigator.onLine);
    console.log(status);
    consolePrint(navigator.onLine);
  }
  useEffect(() => {
    window.addEventListener('online',networkChange);
    window.addEventListener('offline',networkChange);
    
    return () => {
      window.removeEventListener('online',networkChange);
      window.removeEventListener('offline',networkChange);
    };
  },[])
  return status;
}

const App = () => {
  const consoleNetwork = (status) => {
    console.log(status ? 'We are online' : 'we are offline');
  }
  const onLine = useNetwork(consoleNetwork);
  return (
    <div>
      <h1>{onLine ? "online" : "offline"}</h1>
    </div>
  )
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
TTT tt
  • 1

1 Answers1

0

I think it's because the function "setStatus" has some delay time.

SweetDream
  • 49
  • 2