import React from 'react';
import { View, Text, StyleSheet } from 'react-native';

interface Props {
  title: string;
  subtitle: string;
}

const ExampleScreen: React.FC<Props> = ({ title, subtitle }) => {
  return (
    <View style={styles.container}>
      <Text style={styles.title}>{title}</Text>
      <Text style={styles.subtitle}>{subtitle}</Text>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
    marginBottom: 16,
  },
  subtitle: {
    fontSize: 16,
    color: '#666',
  },
});

export default ExampleScreen;

이 코드는 두 개의 프로퍼티(제목과 부제목)를 받아 두 개의 텍스트 엘리먼트가 있는 뷰를 반환하는 예제 스크린이라는 함수형 컴포넌트를 정의합니다. 이 컴포넌트는 Props 타입의 프로퍼티를 취하는 함수 컴포넌트의 유형 별칭인 React.FC 타입을 사용해 정의됩니다.

Props 인터페이스는 TypeScript를 사용하여 정의되며, 컴포넌트가 두 개의 문자열 프로퍼티(제목과 부제목)를 기대한다고 지정합니다.

스타일 객체는 컴포넌트의 스타일을 정의합니다. 이러한 스타일은 React Native에서 성능에 최적화된 스타일을 정의하는 방법인 StyleSheet.create 메서드를 사용하여 정의됩니다.

전반적으로 이 코드는 TypeScript를 사용하여 컴포넌트 프로퍼티의 인터페이스를 정의하는 방법과 StyleSheet 객체를 사용하여 React Native 스타일을 정의하는 방법을 보여줍니다.

import React from 'react';
import { View, Text, StyleSheet } from 'react-native';

interface Props<T> {
  data: T[];
  renderItem: (item: T) => React.ReactNode;
}

function GenericList<T>({ data, renderItem }: Props<T>) {
  return (
    <View style={styles.container}>
      {data.map((item) => (
        <View key={item.id}>{renderItem(item)}</View>
      ))}
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
});

export default GenericList;

이 예제에서는 제네릭 타입 매개변수 T를 받는 GenericList라는 제네릭 함수형 컴포넌트를 정의합니다. 이 컴포넌트는 두 가지 프로퍼티, 즉 T 타입의 아이템 배열인 data와 T 타입의 아이템을 받아 React 노드를 반환하는 함수인 renderItem을 기대합니다.

컴포넌트 내부에서는 data.map 메서드를 사용하여 renderItem 함수를 호출하고 현재 항목을 인수로 전달하여 데이터 배열의 각 항목을 렌더링합니다.

props 인터페이스에서 일반 유형 매개변수를 사용하면 컴포넌트가 다양한 유형의 데이터와 렌더링 함수를 처리할 수 있을 만큼 유연해집니다. 예를 들어 책 객체 배열과 각 책 항목을 별도의 Book 컴포넌트로 렌더링하는 함수를 전달하여 책 목록을 렌더링하는 데 GenericList 컴포넌트를 사용할 수 있습니다.

제네릭 타입을 사용하면 코드의 재사용성과 유연성을 높일 수 있으며, React Native에서 제네릭 및 재사용 가능한 컴포넌트를 빌드하는 데 강력한 툴입니다.

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
http://bit.ly/3Y34pE0

Posted by cipleee