@rehooks/online-status
Version:
React hook for subscribing to `online`/`offline` events and the `navigator.onLine` property to see current status
32 lines (23 loc) • 748 B
JavaScript
;
const { useState, useEffect } = require("react");
function getOnlineStatus() {
return typeof navigator !== "undefined" &&
typeof navigator.onLine === "boolean"
? navigator.onLine
: true;
}
function useOnlineStatus() {
const [onlineStatus, setOnlineStatus] = useState(getOnlineStatus());
const goOnline = () => setOnlineStatus(true);
const goOffline = () => setOnlineStatus(false);
useEffect(() => {
window.addEventListener("online", goOnline);
window.addEventListener("offline", goOffline);
return () => {
window.removeEventListener("online", goOnline);
window.removeEventListener("offline", goOffline);
};
}, []);
return onlineStatus;
}
module.exports = useOnlineStatus;