@modern-kit/react
Version:
43 lines (40 loc) • 1.55 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
interface IteratorProps<T> {
items: T[] | readonly T[];
itemKey?: T extends Record<PropertyKey, any> ? keyof T : string;
renderItem: (item: T, index: number) => JSX.Element;
}
/**
* @description 주어진 배열을 반복하면서, 각 아이템을 렌더링하는 컴포넌트입니다.
*
* `itemKey`로 문자열을 넘겨주면, 각 요소에서 해당 프로퍼티 key의 값을 각 요소의 `unique key`로 설정합니다.
*
* 문자열/숫자 배열의 경우 itemKey를 넘기지 않아도 자동으로 `${item}_${index}`형태로 지정됩니다.
*
* @template T - 반복할 아이템의 타입
* @param {IteratorProps<T>} props - Iterator 컴포넌트 props
* @param {T[] | readonly T[]} props.items - 반복할 아이템의 배열
* @param {string} [props.itemKey] - 아이템의 고유 키
* @param {(item: T, index: number) => JSX.Element} props.renderItem - 각 아이템을 렌더링할 함수
*
* @example
* ```tsx
* // 문자열 배열 사용 예시
* <Iterator
* items={['가', '나', '다']}
* renderItem={(item) => <div>{item}</div>}
* />
*
* @example
* ```tsx
* // 객체 배열 사용 예시
* <Iterator
* items={[{ id: 1, name: '홍길동' }, { id: 2, name: '김철수' }]}
* itemKey="id"
* renderItem={(item) => <div>{item.name}</div>}
* />
* ```
*/
declare const Iterator: <T>({ items, itemKey, renderItem, }: IteratorProps<T>) => react_jsx_runtime.JSX.Element;
export { Iterator };
export type { IteratorProps };