Front-End/React.js
React.js | 스크롤 감지 핸들러
개발자티포
2022. 11. 23. 09:47
728x90
반응형
// 스크롤이 50px 이상 내려올경우 true값을 넣어줄 useState
const [scroll, setScroll] = useState(false);
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => {
window.removeEventListener('scroll', handleScroll); //clean up
};
}, []);
const handleScroll = () => {
console.log("window.scrollY : ", window.scrollY)
};
기준점을 잡고 현재 상태에서 올라갔는지 내려갔는지를 보려면 state가 아닌 일반 변수를 써야한다.
var scroll = 0;
useEffect(() => {
window.addEventListener('scroll', () => {
// 검색등을 한 뒤 스크롤이 맨 위일 때는 임의로 컴포넌트를 보여주게 함.
if (window.scrollY === 0) {
dispatch({ name: "scrollUp", value: true })
}
// 스크롤이 맨 마지막에 도달했을 때
else {
if (Math.round(document.documentElement.scrollTop + window.innerHeight) - document.body.scrollHeight > -10) {
dispatch({ name: "scrollUp", value: false });
}
else if ((window.scrollY) < 10) {
dispatch({ name: "scrollUp", value: true });
}
else {
if (scroll < window.scrollY) {
dispatch({ name: "scrollUp", value: false });
}
else {
dispatch({ name: "scrollUp", value: true });
}
}
}
scroll = window.scrollY;
});
}, []);
728x90
반응형