For AI agents: the complete documentation index is available at https://react-native-gesture-image-viewer.pages.dev/1.x/ko/llms.txt, the full documentation bundle is available at https://react-native-gesture-image-viewer.pages.dev/1.x/ko/llms-full.txt, and this page is available as Markdown at https://react-native-gesture-image-viewer.pages.dev/1.x/ko/guide/usage/custom-components.md.
v3 정식 출시. 변경 사항 보기
  • 한국어
  • 1.x
  • 커스텀 컴포넌트

    react-native-gesture-image-viewer는 강력한 기능으로 완벽한 컴포넌트 커스터마이징이 가능합니다. 이미지뿐만 아니라 원하는 컴포넌트로 제스처를 지원하는 아이템을 만들 수 있습니다.

    모달 컴포넌트

    다음과 같이 원하는 Modal을 사용하여 뷰어를 만들 수 있습니다.

    Use Modal
    Use react-nativee-modal
    import { FlatList, Image, Modal } from 'react-native';
    import { GestureViewer } from 'react-native-gesture-image-viewer';
    
    function App() {
      const images = [...];
      const [visible, setVisible] = useState(false);
    
      return (
        <Modal visible={visible} onRequestClose={() => setVisible(false)}>
          <GestureViewer
            data={images}
            renderItem={renderImage}
            ListComponent={FlatList}
            onDismiss={() => setVisible(false)}
          />
        </Modal>
      );
    }

    리스트 컴포넌트

    ListComponent props를 통해 ScrollView, FlatList, FlashList 등 원하는 리스트를 지원합니다.
    listProps는 선택한 리스트 컴포넌트에 맞는 타입 추론을 제공하여, IDE에서 정확한 자동완성과 타입 안전성을 보장합니다.

    import { FlashList } from '@shopify/flash-list';
    
    function App() {
      return (
        <GestureViewer
          data={images}
          ListComponent={FlashList}
          listProps={
            {
              // ✅ FlashList props autocompletion
            }
          }
        />
      );
    }

    콘텐츠 컴포넌트

    renderItem props를 통해 expo-image, FastImage 등 다양한 종류의 콘텐츠 컴포넌트를 주입하여 제스처를 사용할 수 있습니다.

    import { GestureViewer } from 'react-native-gesture-image-viewer';
    import { Image } from 'expo-image';
    
    function App() {
      const renderImage = useCallback((imageUrl: string) => {
        return (
          <Image
            source={{ uri: imageUrl }}
            style={{ width: '100%', height: '100%' }}
            contentFit="contain"
          />
        );
      }, []);
    
      return <GestureViewer data={images} renderItem={renderImage} />;
    }