I made this custom hook to get window width. It is working but I have a question.
I used useEffect to add event listener to window at component mount. But then my friend suggested me to use return function to remove the event listener.
How this is working? Shouldn't the returned function destroy the event listener and make it not work? Since this is happing one time on component mount ?
import React from "react";
const useWindowSize = () => {
const [windowSize, setWindowSize] = React.useState({
width: window.innerWidth,
height: window.innerHeight,
});
const windowResize = () => {
setWindowSize({
width: window.innerWidth,
height: window.innerHeight,
});
};
React.useEffect(() => {
window.addEventListener("resize", windowResize);
return () => {
window.removeEventListener("resize", windowResize);
};
}, []);
return windowSize;
};
export default useWindowSize;