개발자
안녕하세요, RN으로 앱개발 중인 주니어 개발자입니다. 이번에 활성화 된 특정 범위로 이동시 그에 해당하는 날짜로 값을 설정하는 컴포넌트를 제작하고 있습니다. 예시를 들자면 아이폰의 갤러리의 영상 재생바와 유사합니다. 이를 위해 ScrollView에 horizontal 속성을 이용하여 변화하는 x값을 사용하여 진행 중 입니다. 다만, 이동이 완료된 뒤 해당 x값을 변환하여 상태를 변경하는 과정에서 막혀 도움을 얻고자 합니다. 손을 뗀 이후 스크롤이 완전히 멈춘 경우에 해당 값을 변경하고 싶은데, onScrollDragEnd 와 onMomentumScrollEnd 이 각각 손을 뗀 직후, 관성 스크롤이 생긴 뒤 종료된 경우의 이벤트로 사용되어 이에 어려움을 겪고있습니다. 혹시 위 두 이벤트를 이용하여 관성 스크롤이 생기던 생기지 않던 모든 스크롤이 멈춘 뒤 메소드를 실행 시킬 수 있는 방법이 있을까요? 혹은 ScrollView 를 대체하여 변화하는 x 좌표를 이용 할 수 있는 컴포넌트 / 라이브러리 / 키워드를 공유해주신다면 감사히 참고하겠습니다. 감사합니다.

답변 4
안녕하세요! RN의 기본 터치 시스템으로 네이티브의 세세한 조정까지 신경쓰기는 어려운걸로 알고 있습니다. 다행히 이런 문제점?은 예전부터 있어왔고 이를 해결하기 위한 라이브러리도 있어요. 좀 더 세세하게 네이티브 터치 시스템과 상호작용 할 수 있는 걸로 알고 있습니다. 물론 위 라이브러리가 구현하고자 하는 기능에 비해 과한 것 일 수 있으니 참고 정도만 해주시면 좋을 것 같아요 :) - https://docs.swmansion.com/react-native-gesture-handler/docs/

최경락
작성자
FE • 2023년 07월 19일
매번 react-native 컴포넌트 불러올 때 눈치없이 불러와지는 라이브러리로만 알고있었는데.... 말씀주신 문서 참고해보겠습니다! 감사합니다!
React Native에서 스크롤 뷰 스크롤이 완전히 멈춘 경우를 핸들링하기 위해 다음과 같은 방법을 고려해볼 수 있습니다: 1. InteractionManager 사용: InteractionManager를 사용하면 스크롤 애니메이션 및 기타 상호 작용이 완료된 후에 작업을 수행할 수 있습니다. `InteractionManager.runAfterInteractions()` 함수를 사용하여 스크롤 관련 작업을 예약하고, 해당 작업이 실행되기 전에 모든 상호 작용이 완료될 때까지 기다릴 수 있습니다. 2. Animated 사용: Animated 라이브러리를 사용하여 스크롤 위치를 추적하고, 애니메이션 상태를 확인하여 스크롤이 완전히 멈춘 후에 작업을 수행할 수 있습니다. 위의 방법 중 하나를 선택하여 사용하시면, 스크롤이 완전히 멈춘 후에 원하는 작업을 수행할 수 있을 것입니다. 또한, 필요에 따라 애니메이션 라이브러리를 추가로 사용하여 세부적인 애니메이션 효과를 구현할 수도 있습니다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52#1 import { InteractionManager } from 'react-native'; // 스크롤이 완전히 멈춘 후 실행되어야 할 작업 const handleScrollEnd = () => { // 작업 실행 }; // 스크롤 이벤트 핸들러 const handleScroll = () => { // 스크롤 중인 동안 실행되는 작업 }; const handleScrollEndWithDelay = () => { InteractionManager.runAfterInteractions(() => { handleScrollEnd(); }); }; // ScrollView 컴포넌트 <ScrollView onScroll={handleScroll} onScrollEndDrag={handleScrollEndWithDelay} > {/* 컨텐츠 */} </ScrollView> #2 import { Animated } from 'react-native'; // Animated.Value 사용하여 x 위치 추적 const scrollX = new Animated.Value(0); // 스크롤 중인 동안 실행되는 작업 const handleScroll = Animated.event( [{ nativeEvent: { contentOffset: { x: scrollX } } }], { useNativeDriver: true } ); // 스크롤이 완전히 멈춘 후 실행되어야 할 작업 const handleScrollEnd = () => { // 작업 실행 }; // Animated.event로부터 생성된 핸들러를 사용하여 스크롤 이벤트 처리 <ScrollView onScroll={handleScroll} onMomentumScrollEnd={handleScrollEnd} > {/* 컨텐츠 */} </ScrollView>
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!