프론트앤드/[React]
[React] 페이지 상위로 가는 button
헬리이
2023. 3. 6. 13:00
728x90
프로젝트 중이다..
영화 상세페이지 구현중에 스크롤을 컨트롤 하는 버튼이 있으면 좋겠어서 찾아보고 구현해 보았다.
구현 : Up버튼을 누르면 상세 페이지 내 상위로 scroll이 올라감
//return 위
const [toggleBtn, setToggleBtn] = useState(true);
const handleScroll = () => {
const { scrollY } = window;
scrollY > 200 && setToggleBtn(!toggleBtn);
};
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => {
window.removeEventListener('scroll', handleScroll);
};
}, []);
const goToTop = () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
toggleBtn(false);
};
//return아래
<button onClick={goToTop}>Up</button>
const [toggleBtn, setToggleBtn] = useState(true);
: toggle 상태를 변경시켜주는 useState 선언해 준다.
const handleScroll = () => {
const { scrollY } = window;
scrollY > 200 && setToggleBtn(!toggleBtn);
};
: window 객체에서 scrollY 값을 받아온다.
: scrollY가 200 보다 클때 toggleBtn 상태가 변하게 설정한다.
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => {
window.removeEventListener('scroll', handleScroll);
};
});
: scroll event 발생시, handleScroll 함수 발생 하게한다.
const goToTop = () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
toggleBtn(false);
};
: 버튼 onClick 시 실행될 함수 goToTop 을 설정해준다.
: 버튼을 onClick 했을 때, window top의 0 위치로 smooth 하게 올라가는것을 볼 수 있다.
728x90