오늘은 탑버튼을 만들었다.
찾아보니 간단하길래 그냥 대충 보고 만들면 되겠거니... 했는데?
했는데?
안 됐다.
이유는 공통으로 적용된 레이아웃에 overflow가 있으면 적용이 안 되는 모양...
나는 일단 탑버튼을 컴포넌트로 또 따로 분리했는데
onClick 이벤트가 발생했을 때 실행할 함수를 다른 컴포넌트 파일을 만들어 작성한다.
처음엔 그냥 window.scrollTo로 했었는데 window는 전체 창의 스크롤 위치를 변경하는 것이다.
그래서 찾아보니 공통 컴포넌트에 overflow가 있는 것을 발견@!
그럼 거기에 id를 넣어준다.
<main className="grow overflow-auto" id="main-content">
그냥 메인에 이렇게 넣어주기.
그리고 tsx 파일을 만들어서
const topBtn = (e: React.MouseEvent<SVGElement, MouseEvent>) => {
const mainContent = document.getElementById('main-content');
if (mainContent !== 0) {
mainContent.scrollTo({
top: 0,
behavior: 'smooth'
});
}
};
export default topBtn;
이렇게 넣어줬다.
타입은 React.MouseEvent<SVGElement, MouseEvent> 이것으로 지정해주고,
상수 mainContent에 id가 main-content인 것을 가져와서 넣어준다.
그리고 mainContente가 존재하는지 확인하고, mainContent의 위치가 0이 아니면 실행시켜준다.
다른 방법도 있나 좀 더 찾아봤는데 일단은 내가 찾은 방법 중 가장 간단했다.
<IoArrowUpCircleOutline
className="fixed bottom-20 right-[calc(50%-300px)] mr-5 cursor-pointer text-5xl text-gray-600"
onClick={topBtn}
/>
하여튼 저렇게 만든 컴포넌트는 import해서 onclick에 저렇게 넣어주면 잘 작동한다. 끄읏~
'TIL' 카테고리의 다른 글
24. 07. 12 TIL (0) | 2024.07.12 |
---|---|
zustand 사용하기 (0) | 2024.07.11 |
24. 07. 09 TIL (0) | 2024.07.09 |
타입 정리 (0) | 2024.07.08 |
24. 07. 05 TIL (0) | 2024.07.05 |