Skip to content

Instantly share code, notes, and snippets.

@RayLuxembourg
Created May 2, 2019 10:38
Show Gist options
  • Save RayLuxembourg/2f08a0f0c3a49d7d8f6383f5631c2634 to your computer and use it in GitHub Desktop.
Save RayLuxembourg/2f08a0f0c3a49d7d8f6383f5631c2634 to your computer and use it in GitHub Desktop.
React typescript generic list
import * as React from 'react';
export interface GenericListProps<T> {
items: T[];
itemRenderer: (item: T) => JSX.Element;
}
export class GenericList<T> extends React.Component<GenericListProps<T>, {}> {
render() {
const { items, itemRenderer } = this.props;
return (
<div>
{items.map(itemRenderer)}
</div>
);
}
}
import { IUser, User } from '@src/models';
import { GenericList } from '@src/components';
const users = [
new User('Rosamonte', 'Especial'),
new User('Aguantadora', 'Despalada'),
new User('Taragui', 'Vitality'),
];
export class UserList extends GenericList<IUser> { }
export default () => (
<UserList
items={users}
itemRenderer={(item) => <div key={item.id}>{item.fullName}</div>}
/>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment