[ React ] 리스트의 focus된 옵션을 따라 스크롤 자동 이동

2024. 11. 15. 08:59· React
목차
  1. 요구사항
  2. 구현
  3. 결과
728x90
 

[ React ] SelectBox 컴포넌트 키보드 이벤트 추가 | onKeyDown

키보드 이벤트 타입은 총 3가지가 있다.  [ 모던 자바스크립트 ] 40. 이벤트1) 이벤트 드리븐 프로그래밍이벤트가 발생했을 때 호출될 함수를 이벤트 핸들러라 하고, 이벤트가 발생했을 때 브라

zodev.tistory.com

 

해당 컴포넌트에 이어서 작업한 내용

(필요해서 찾고 있었는데 정리를 안 해놨더군요)

 

 

 

요구사항

스크롤이 있는 옵션 리스트에서 키보드 이벤트를 통해 focus된 옵션을 이동 중일 때, 스크롤 아래쪽의 옵션이 focus되면 스크롤을 자동적으로 이동시키고 싶다.

 

 

 

 

구현

1. OptionListBox에 ref를 걸어준다.

<OptionListBox $isclose={isClose} ref={listRef}>

 

 

2. focusedIndex가 변화할 때 scrollIntoView를 통해 스크롤을 이동시킨다.

useEffect(() => {
  if (focusedIndex !== -1 && listRef.current) {
    const focusedElement = listRef.current.children[focusedIndex as number];
    if (focusedElement) {
      focusedElement.scrollIntoView({
        behavior: "smooth",
        block: "nearest",
      });
    }
  }
}, [focusedIndex]);

현재 포커싱된 focusedElement가 화면 상에 보이도록 해주는 코드이다.

 

이때 스크롤이 자연스럽게 이동되도록 behavior: "smooth" 속성을 주었고, 

block: "nearest" 속성을 통해 스크롤 위치를 조정해주었다. 

 

 

 

 

결과

 

 

 

 

 

 

728x90

'React' 카테고리의 다른 글

[ React ] JSX란?  (0) 2024.11.22
[ React ] React에서 slot 사용하기  (0) 2024.11.14
[ React ] CommonTable 편집모드 (데이터 변경, 행 추가, 삭제)  (0) 2024.08.29
[ React ] CommonTable 컴포넌트 기본 구현 (정렬, 체크박스, 스크롤 등)  (0) 2024.07.16
[ React ] DatePicker, SelectBox의 팝업을 createPortal로 변경  (0) 2024.07.12
  1. 요구사항
  2. 구현
  3. 결과
'React' 카테고리의 다른 글
  • [ React ] JSX란?
  • [ React ] React에서 slot 사용하기
  • [ React ] CommonTable 편집모드 (데이터 변경, 행 추가, 삭제)
  • [ React ] CommonTable 컴포넌트 기본 구현 (정렬, 체크박스, 스크롤 등)
ZoD
ZoD
바쁘게 굴러가는 ZoD의 하루~
como siempre바쁘게 굴러가는 ZoD의 하루~
ZoD
como siempre
ZoD
  • 분류 전체보기 (173)
    • Daily (0)
    • Javascript (16)
      • 모던 자바스크립트 (46)
    • Typescript (8)
    • FrontEnd (7)
    • React (21)
      • tanstack query (1)
      • 라이브러리 (3)
    • Vue (33)
      • Nuxt (11)
      • Quasar (6)
    • CSS (12)
    • Storybook (8)
    • Figma (3)
    • CS 지식 (5)
    • Network (5)
    • 알고리즘 (2)
    • 사이드 프로젝트 (4)
      • ddangkong (4)
      • boncierge (0)
    • 개발, 근데 이제 헛소리를 곁들인 (1)
    • ETC (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

hELLO · Designed By 정상우.v4.2.2
ZoD
[ React ] 리스트의 focus된 옵션을 따라 스크롤 자동 이동
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.