끄적끄적 코딩
// useNetwork.js

const useNetwork = (onChange) => {
  const [status, setStatus] = useState(navigator.onLine);
  const handleChange = () => {
    onChange(navigator.onLine);
    setStatus(navigator.onLine);
  };
  useEffect(() => {
    window.addEventListener("online", handleChange);
    window.addEventListener("offline", handleChange);
    return () => {
      window.removeEventListener("online", handleChange);
      window.removeEventListener("offline", handleChange);
    };
  }, []);
  return status;
};

export default useNetwork;
// index.js

import React, { useEffect, useRef, useState } from "react";
import ReactDOM from "react-dom";
import useNetwork from "./useNetwork";

const App = () => {
  const handleNetworkChange = (online) => {
    console.log(online ? "We just went online" : "We are offline");
  };
  const onLine = useNetwork(handleNetworkChange);
  return (
    <div className="App">
      <h1>{onLine ? "Online" : "Offline"}</h1>
    </div>
  );
};

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

 

navigator.online을 사용해서 현재 브라우저의 연결 상태를 bool형식으로 반환받습니다.

window에 online일때와 offline인 경우에 이벤트를 추가하여서 네트워크 상황에 따른 출력을 합니다.

'React' 카테고리의 다른 글

[React] 전체 화면  (0) 2021.01.09
[React] 스크롤  (0) 2021.01.09
[React] 동적 스타일 적용  (2) 2021.01.08
[React] mouseleave  (0) 2021.01.08
[React] beforeunload  (0) 2021.01.08

검색 태그