Skip to content

Instantly share code, notes, and snippets.

@Stringsaeed
Last active July 15, 2023 21:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Stringsaeed/9298caf9155ec535acd21d570a8750fc to your computer and use it in GitHub Desktop.
Save Stringsaeed/9298caf9155ec535acd21d570a8750fc to your computer and use it in GitHub Desktop.
Render Item Hook to use in flatlists in react-native
import React, { useCallback } from "react";
import { ListRenderItem } from "react-native";
type BaseProps<T extends unknown> = {
item: T;
};
type UseRenderItemProps<T, P extends BaseProps<T>> = {
Component: React.ComponentType<P>;
componentProps: Omit<P, "item">;
};
const useRenderItem = <T, P extends BaseProps<T>>({
componentProps,
Component,
}: UseRenderItemProps<T, P>) => {
const renderItem: ListRenderItem<T> = useCallback(
({ item }) => <Component {...(componentProps as P)} item={item} />,
[Component, componentProps]
);
return renderItem;
};
export default useRenderItem;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment