끄적끄적 코딩
article thumbnail
Published 2021. 1. 9. 00:25
[React] 전체 화면 React
// useFullscreen.js

import React, { useRef } from "react";

const useFullscreen = (callback) => {
  const element = useRef();
  const runCb = (isFull) => {
    if (callback && typeof callback === "function") {
      callback(isFull);
    }
  };
  const triggerFull = () => {
    if (element.current) {
      if (element.current.requestFullscreen) {
        element.current.requestFullscreen();
      } else if (element.current.mozRequestFullScreen) {
        element.current.mozRequestFullScreen();
      } else if (element.current.webkitRequestFullscreen) {
        element.current.webkitRequestFullscreen();
      } else if (element.current.msRequestFullscreen) {
        element.current.msRequestFullscreen();
      }
      runCb(true);
    }
  };

  const exitFull = () => {
    document.exitFullscreen();
    if (document.exitFullscreen) {
      document.exitFullscreen();
    } else if (document.mozCancelFullScreen) {
      document.mozCancelFullScreen();
    } else if (document.webkitExitFullscreen) {
      document.webkitExitFullscreen();
    } else if (document.msExitFullscreen) {
      document.msExitFullscreen();
    }
    runCb(false);
  };
  return { element, triggerFull, exitFull };
};

export default useFullscreen;
// index.js

import React, { useRef } from "react";
import ReactDOM from "react-dom";
import useFullscreen from "./useFullscreen";

const App = () => {
  const onFullS = (isFull) => {
    console.log(isFull ? "We are full" : "We are small");
  };
  const { element, triggerFull, exitFull } = useFullscreen(onFullS);
  return (
    <div className="App" style={{ height: "1000vh" }}>
      <div ref={element}>
        <img
          style={{ height: "500px" }}
          src="https://pbs.twimg.com/media/Dp6hsEFV4AA_GN-.jpg"
        />
        <br />
        <button onClick={exitFull}>Exit fullscreen</button>
      </div>
      <button onClick={triggerFull}>Make fullscreen</button>
    </div>
  );
};

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

전체화면은 브라우저마다 코드가 다르므로
if문을 통해 브라우저를 확인하고 그에 맞는 전체화면 코드를 실행시켰습니다.

'React' 카테고리의 다른 글

[React] Axios  (0) 2021.01.09
[React] 알림 보내기  (0) 2021.01.09
[React] 스크롤  (0) 2021.01.09
[React] 현재 네트워크 상태 확인  (4) 2021.01.08
[React] 동적 스타일 적용  (2) 2021.01.08

검색 태그