getOnLineStatus
, that uses the NavigatorOnLine
web API to get the online status of the client.useState()
hook to create an appropriate state variable, status
, and setter.useEffect()
hook to add listeners for appropriate events, updating state, and cleanup those listeners when unmounting.status
state variable.const getOnLineStatus = () =>
typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'
? navigator.onLine
: true;
const useNavigatorOnLine = () => {
const [status, setStatus] = React.useState(getOnLineStatus());
const setOnline = () => setStatus(true);
const setOffline = () => setStatus(false);
React.useEffect(() => {
window.addEventListener('online', setOnline);
window.addEventListener('offline', setOffline);
return () => {
window.removeEventListener('online', setOnline);
window.removeEventListener('offline', setOffline);
};
}, []);
return status;
};
const StatusIndicator = () => { const isOnline = useNavigatorOnLine(); return <span>You are {isOnline ? 'online' : 'offline'}.</span>; }; ReactDOM.render(<StatusIndicator />, document.getElementById('root'));
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️