728x90
note)iFrame에서는 동작하지 않았고 새창에서 실행하는 경우에 동작하였다.
note) 변수 뿐만이 아니라 api 도 return 하여 외부에서 이용이 가능하였다.
note) Exit Fullscreen 과 Make Fullscreen button 이 있어서 동작이 가능하였다.
import { useRef } from "react";
export 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 function 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 src="https://i.ibb.co/R6RwNxx/grape.jpg" alt="grape" width="250" />
<button onClick={exitFull}>Exit Fullscreen</button>
</div>
<button onClick={triggerFull}>Make Fullscreen</button>
</div>
);
}
'Java Scripts > React.js' 카테고리의 다른 글
Hook in React - usePreventLeave (0) | 2023.10.07 |
---|---|
Hook in React - useAxios (0) | 2023.09.28 |
Hook in React - useFadeIn (0) | 2023.09.28 |
Hook in React - useConfirm (0) | 2023.09.28 |
Hook in React - useHover (0) | 2023.09.28 |