쩡이 개발공부 블로그
useRef로 스크롤 이동시키기 본문
특정 탭을 클릭하면 탭에 해당하는 내용 부분으로 스크롤이 이동했으면 좋겠다는 요구사항이 생겨서 기록 겸 적어보려고 한다.
리액트에서는 특정 컴포넌트에 어떤 동작을 수행하고 싶을 때 useRef를 사용할 수 있기 때문에 useRef를 사용했다.
짧은 예시)
const ScrollExample = () => {
const scrollRef = useRef(null);
const onClickToMove = () => {
scrollRef.current.scrollIntoView({
behavior: 'smooth',
})
}
return (
<>
<div ref={scrollRef}>이 곳으로 이동</div>
<button onClick={onClickToMove}>클릭 !</button>
</>
);
};
*scrollIntoView 는 특정 앨리먼트 위치로 스크롤을 이동시켜주는 내장 메서드이다.
옵션으로
- block (수직 요소에 대한 옵션)
- inline (수평 요소에 대한 옵션)
- behavior (스크롤시 움직임에 대한 옵션)
이 있다.
*추가로 getBoundingClientRect() 메서드란 것도 있는데, 해당 메서드는 앨리먼트의 크기와 뷰포트에 상대적인 위치 정보를 제공하는 DOMRect 객체를 반환한다.
반환값 예시)
{x: 50, y: 50, width: 260, height: 260, top: 50, right: 410,bottom: 410, left: 50}
'공부' 카테고리의 다른 글
테두리 애니메이션 효과 주기 (2) | 2023.11.26 |
---|---|
클린 아키텍처 (8) | 2023.10.15 |
git push 되돌리기 (5) | 2023.10.09 |
Swiper 슬라이드 사용해보기 (3) | 2023.09.17 |
reduce 사용하기 (5) | 2023.09.10 |
Comments