React, useWindowSize 커스텀 훅
2024. 12. 9. 15:27ㆍ웹 개발
useWindowSize.js
import { useState, useEffect } from "react";
function debounce(func, delay) {
// 디바운스 함수
let timer;
return function (...args) {
clearTimeout(timer);
timer = setTimeout(() => func(...args), delay);
};
}
function getWindowSize () {
return {
width: window.innerWidth,
height: window.innerHeight,
};
};
function useWindowSize() {
const [windowSize, setWindowSize] = useState(getWindowSize);
useEffect(() => {
const handlerResize = debounce(() => {
setWindowSize(getWindowSize);
}, 200); // 200ms 디바운스 지연 시간
window.addEventListener("resize", handlerResize);
return () => {
window.removeEventListener("resize", handlerResize);
};
}, []);
return windowSize;
}
export default useWindowSize;
App.js
import { useState } from 'react';
import useWindowSize from "./hooks/useWindowSize";
function App() {
const { width, height } = useWindowSize();
return (
<p>
width: {width},
height: {height}
</p>
)
}
'웹 개발' 카테고리의 다른 글
React, propTypes 를 통한 prop 검증 (0) | 2024.12.11 |
---|---|
React, useFetch 커스텀 훅 (0) | 2024.12.09 |
React, Use Effect 생명주기 (0) | 2024.12.09 |
React, useState 더 깊이 알기 (0) | 2024.12.09 |
React, styled-components (0) | 2024.12.06 |