일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- React 테스트코드
- FlatList 무한 스크롤
- React Testing Library
- Testing-library/react
- nest.js circular Dependency
- 비동기 테스트
- 프로젝트 배포하기
- nest.js 순환 종속성
- 첫 코딩
- 리액트 테스트 코드
- nest.js forwardRef
- react jest
- mock api 사용법
- nest.js 순환 참조
- HTML
- CSS
- 개발
- react testing library 비동기 테스트 사용법
- react native 무한스크롤
- javascript 테스트
- ScrollView 무한 스크롤
- jest
- 첫코딩
- react 테스트
- mock api를 이용한 react 테스트
- 리액트 테스트
- TodoList 테스트 코드
- react
- JavaScript
- TDD방식으로 리액트 테스팅
Archives
- Today
- Total
성장을 위한 기록
react(리액트) 특정 요소로 스크롤하기, 검색기능에서 자동 스크롤 본문
원하는 요소(element)로 스크롤 하기 , 검색 리스트 자동 스크롤
자주 쓰이는 곳은 아마 어떤 버튼을 눌렀을 때 해당 위치로 자동 스크롤하는 경우에 사용하겠지만, 이번에 나는 상황이 달랐다.
이번 프로젝트에서 검색 기능을 작성하고 있었고, 검색 시 내용을 포함하는 항목을 하단 list에 보이는 기능이 있었다.
여기서 네이버 검색처럼 방향키로 요소를 선택하고 싶었고, 작성 후 테스트해보니 처음 화면에 보이는 list 영역을 지나가면 스크롤되지 않고, 안 보이는 화면에서 열심히 선택하고 있었다......
<element>.scrollIntoView(<옵션>)
나는 이 친구를 사용하여 스크롤 조건을 작성했다.
일부 예시 코드
if (e.code === "ArrowDown" && Number(stockIndex) !== stockArr.length) {
setStockIndex(stockIndex + 1);
// 자동 스크롤 내리기
// 4번째마다 스크롤
if (stockIndex % 4 === 0 && stockIndex !== 0) {
const scrollPoint =
wrapTagStockList?.current?.children[stockIndex - 1];
scrollPoint.scrollIntoView({ behavior: "smooth" });
}
} else if (e.code === "ArrowUp" && Number(stockIndex) !== 1) {
setStockIndex(stockIndex - 1);
// 자동 스크롤 올리기
// 4번째마다 스크롤
if (stockIndex % 4 === 0 && stockIndex !== 0) {
if (stockIndex === 4) {
const scrollPoint = wrapTagStockList?.current?.children[0];
scrollPoint.scrollIntoView({ behavior: "smooth" });
} else {
const scrollPoint =
wrapTagStockList?.current?.children[stockIndex - 6];
scrollPoint.scrollIntoView({ behavior: "smooth" });
}
}
다른 조건이랑 섞여있어 보기는 어렵지만, scrollPoint.scrollIntoView({ behavior: "smooth" })
를 통해 스크롤했다고 보면 된다. 여기서 scrollPoint는 Ref를 통해 list를 감싸고 있는 div태그에 접근을 했고, 그 이후 children 프로퍼티와 인덱스 값을 이용하여 원하는 요소에 접근을 할 수 있었다.
정해진 기준치 이상을 접근하게 되면 자동으로 리스트가 업되는 방식이다.
'FE (Front End) (구) > React' 카테고리의 다른 글
React(리액트) 로그인 이후 이전 페이지로 이동, 페이지 저장하기 (0) | 2022.07.05 |
---|---|
react .env활용하여 API키 등 환경 변수 관리하기, firebase 예제 (0) | 2022.07.04 |
React (리액트) onKeyDown 이벤트 두 번 실행 되는 이슈, 한 번만 실행하기 (0) | 2022.07.01 |
React(리액트) React-Query 쿼리 useMutation 사용해보기, invalidateQueries( (0) | 2022.06.28 |
React, React-query 리액트 쿼리 useQuery 사용하여 get 받아오기 기초 사용 방법 (0) | 2022.06.25 |
Comments