import React, { cloneElement, isValidElement } from 'react'; import { warning } from './utils'; export function For({ collection, iterator, }: { collection: T[]; iterator: (item: T, index?: number) => React.ReactNode; }) { if (!Array.isArray(collection)) { warning('In For Component, collection should be an Array.'); return null; } return ( <> {collection.map((item, index) => { const element = iterator(item, index); if (isValidElement(element) && !element.key) { return cloneElement(element, { key: index }); } return element; })} ); }