UseScroll
유저가 스크롤해서 어디를 지정하거나 지나쳤을 때 나타나게 함
const useScroll=()=>{
const[state,setState]=useState({
x:0,
y:0
});
const onScroll=()=>{
console.log(window.scrollY);
setState({y :window.scrollY},{x :window.scrollX});
};
useEffect(()=>{
window.addEventListener("scroll",onScroll);
return()=>{
window.removeEventListener("scroll",onScroll);
};
},[]);
return state;
};
const App=()=>{
const {y}=useScroll();
return(
<div className="App" style=>
<h1 style=>Hi</h1>
</div>
);
};
const onScroll = () => {
console.log(window.scrollY);
setState({ y: window.scrollY }, { x: window.scrollX });
};
측정한 window의 scroll으로 set 해준다.
UseFullscreen
const useFullscreen = (callback) => {
const element = useRef();
const triggerFull = () => {
if (element.current) {
if (element.current.requestFullscreen) {
element.current.requestFullscreen(); //fullscreen으로 만들어준다.
} else if (element.current.mozRequestFullscreen) {
element.current.mozRequestFullscreen();
} else if (element.current.webkitRequestFullscreen) {
element.current.webkitRequestFullscreen();
} else if (element.current.msRequestFullscreen) {
element.current.msRequestFullscreen();
}
if (callback && typeof onFulls === "function") {
callback(true);
}
}
};
const exitFull = () => {
document.exitFullscreen();
if (document.current) {
if (document.current.requestFullscreen) {
element.current.requestFullscreen(); //fullscreen으로 만들어준다.
} else if (element.current.mozRequestFullscreen) {
element.current.mozRequestFullscreen();
} else if (element.current.webkitRequestFullscreen) {
element.current.webkitRequestFullscreen();
} else if (element.current.msRequestFullscreen) {
element.current.msRequestFullscreen();
}
if (callback && typeof onFulls === "function") {
callback(false);
}
}
};
return { element, triggerFull, exitFull };
};
const App = () => {
const onFulls = (isFull) => {
console.log(isFull ? "We are full" : "We are small");
};
const { element, triggerFull, exitFull } = useFullscreen(onFulls);
return (
<div className="App">
<div ref={element}>
<img ref={element} src="data:image/png;base64" />
</div>
<button onClick={triggerFull}>Make fullscreen</button>
<button onClick={exitFull}>Exit fullscreen</button>
</div>
);
};
return {element,triggerFull,exitFull};
내부함수 자체가 return값이라면 내부함수 외부에서 사용 가능하다.
const {element,triggerFull,exitFull}=useFullscreen(onFulls);
내부함수를 사용하기 위해 define
결과 이미지를 풀스크린으로 만드는 버튼인 hooks