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
반응형
'Front-End > React.js' 카테고리의 다른 글
React.js | npm run build JavaScript heap out of memory error (0) | 2022.12.13 |
---|---|
React.js | Text 데이터 줄바꿈 안먹힐 때 (0) | 2022.12.05 |
React.js | string을 HTML 태그로 보여지게 하기 (0) | 2022.05.20 |
React.js | 컴포넌트 바깥 영역 클릭 시 이벤트 (0) | 2022.02.10 |
React.js | xlsx 모듈을 이용한 엑셀 파일 저장 (0) | 2022.02.07 |