2024-03-18 19:32:43 -05:00
|
|
|
import { useState, useEffect } from 'react';
|
|
|
|
|
|
|
|
const useWindowWidth = () => {
|
|
|
|
const [windowWidth, setWindowWidth] = useState(undefined);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
// Handler to call on window resize
|
|
|
|
function handleResize() {
|
|
|
|
// Set window width to state
|
|
|
|
setWindowWidth(window.innerWidth);
|
|
|
|
}
|
2025-04-02 17:47:30 -05:00
|
|
|
|
2024-03-18 19:32:43 -05:00
|
|
|
// Add event listener
|
|
|
|
window.addEventListener('resize', handleResize);
|
2025-04-02 17:47:30 -05:00
|
|
|
|
2024-03-18 19:32:43 -05:00
|
|
|
// Call handler right away so state gets updated with initial window size
|
|
|
|
handleResize();
|
|
|
|
|
|
|
|
// Remove event listener on cleanup
|
|
|
|
return () => window.removeEventListener('resize', handleResize);
|
|
|
|
}, []); // Empty array ensures that effect is only run on mount and unmount
|
|
|
|
|
|
|
|
return windowWidth;
|
|
|
|
};
|
|
|
|
|
|
|
|
export default useWindowWidth;
|