React Navigation을 사용하여 아래쪽 탭을 누른 후 화면 상단으로 스크롤하는 UI 만들기
7148 단어 React Nativetech
아래 캡처와 같이 포커스 태그의 아래쪽 태그를 누를 때 화면 맨 위로 스크롤하는 UI를 만듭니다.
아래 탭을 클릭하면
위로 스크롤합니다.
React Navigation은 UI를 쉽게 구현할 수 있는 API를 제공합니다.
그것은 useScrollToTop입니다.
ScrollView 또는 Flatlist와 함께 사용할 수 있습니다.
함수 인터페이스 내부에서 사용할 때의 코드 샘플
import * as React from 'react';
import { ScrollView } from 'react-native';
import { useScrollToTop } from '@react-navigation/native';
function Albums() {
const ref = React.useRef(null);
useScrollToTop(ref);
return <ScrollView ref={ref}>{/* content */}</ScrollView>;
}
샘플은 링크된 공식 문서에서 빌려왔습니다.링크에는 클래스 구성 요소에서 사용하는 견본도 열거되어 있습니다.
주의점
아래와 같이 맨 아래 탭 안에 맨 윗부분 탭을 사용할 때 주의해야 한다.
아래쪽 레이블에 최상위 레이블이 있으면 아래쪽 레이블을 눌러도 스크롤되지 않습니다.
실제로 최상위 레이블(이 예에서 레이블 1이라고 적힌 레이블)을 누르면 스크롤이 발생합니다.
useScrollToTop
의 실시 방식을 보면 등급에서 가장 가까운 라벨 내비게이션에 tabPress
이벤트의 청중을 설정했다.따라서 가장 가까운 최상위 레이블을 누르면 스크롤 동작이 됩니다.useScrollToTop.ts(발췌문)
export default function useScrollToTop(
ref: React.RefObject<ScrollableWrapper>
) {
const navigation = useNavigation();
const route = useRoute();
React.useEffect(() => {
let current = navigation;
// The screen might be inside another navigator such as stack nested in tabs
// We need to find the closest tab navigator and add the listener there
while (current && current.getState().type !== 'tab') {
current = current.getParent();
}
if (!current) {
return;
}
const unsubscribe = current.addListener(
// We don't wanna import tab types here to avoid extra deps
// in addition, there are multiple tab implementations
// @ts-expect-error
'tabPress',
...
맨 윗부분과 함께 사용하는 경우 밑단 라벨을 누르면 스크롤을 하려면 기댈 필요가 없다useScrollToTop
. 스스로 스크롤을 제어하는 것도 필요하다.총결산
React Navigation의
useScrollToTop
를 소개했다.편리한 함수를 제공해 주셔서 감사합니다.
Reference
이 문제에 관하여(React Navigation을 사용하여 아래쪽 탭을 누른 후 화면 상단으로 스크롤하는 UI 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tasugi/articles/527dc3aa968b7e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)