Is there a function, like componentWillUnmount, that will fire before the page is refreshed

You could try listening for the window.beforeunload event.

The beforeunload event is fired when the window, the document and its
resources are about to be unloaded. The document is still visible and
the event is still cancelable at this point.

useEffect(() => {
  const unloadCallback = (event) => { ... };

  window.addEventListener("beforeunload", unloadCallback);
  return () => window.removeEventListener("beforeunload", unloadCallback);
}, []);

Note: This will respond to anything that causes the page to unload though.

Note 2:

However note that not all browsers support this method, and some
instead require the event handler to implement one of two legacy
methods:

  • assigning a string to the event’s returnValue property
  • returning a string from the event handler.

Leave a Comment