I add an event listener inside useEffect
. It runs once after first rerender due to the useEffect second argument([]
). Then I try to remove it outside useEffect
(in handleSearch function) but it doesn't work. I suspect it has something to do with function scopes but don't understand it fully. Maybe there is a workaround?
const handleSearch = () => {
window.removeEventListener('resize', setPageHeightWrapper);
};
const [pageHeight, setPageHeight] = useState(0);
function setPageHeightWrapper() { setPageHeight(window.innerHeight); };
useEffect(() =>{
window.addEventListener('resize', setPageHeightWrapper);
return () => {
window.removeEventListener('resize', setPageHeightWrapper);
};
}, []);