useWindowSize Hook 구현
시작하려면 편집기를 엽니다. 편집기에서 다음 파일을 볼 수 있습니다.
├── package-lock.json
├── package.json
├── public
│ ├── index.html
│ └── robots.txt
└── src
├── App.css
├── App.js
├── hooks
│ └── useWindowSize.js
├── index.css
├── index.js
├── reportWebVitals.js
└── setupTests.js
이 단계에서는 현재 창 크기를 가져오기 위해 useWindowSize 사용자 정의 Hook 을 구현하는 방법을 배우게 됩니다.
src/Hooks 디렉토리에 있는 useWindowSize.js 파일을 엽니다.
- 이 파일에서 필요한 종속성을 가져옵니다.
import { useEffect, useState } from "react";
useWindowSize 함수를 정의합니다.
import { useEffect, useState } from "react";
export const useWindowSize = () => {
const [windowSize, setWindowSize] = useState({
width: window.innerWidth,
height: window.innerHeight
});
const changeWindowSize = () => {
setWindowSize({ width: window.innerWidth, height: window.innerHeight });
};
useEffect(() => {
window.addEventListener("resize", changeWindowSize);
return () => {
window.removeEventListener("resize", changeWindowSize);
};
}, []);
return windowSize;
};
설명:
useWindowSize 함수는 현재 창 너비와 높이를 포함하는 객체를 반환합니다.
useState 훅은 windowSize 상태 변수와 이를 업데이트하는 함수 setWindowSize를 생성하는 데 사용됩니다.
- 창 크기가 조정될 때
windowSize 상태를 업데이트하기 위해 changeWindowSize 함수가 정의됩니다.
useEffect 훅은 resize 이벤트에 대한 이벤트 리스너를 추가하고 컴포넌트가 언마운트될 때 이를 제거하는 데 사용됩니다.
windowSize 객체는 useWindowSize 함수에서 반환됩니다.