UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

51 lines (44 loc) 1.16 kB
import { noop } from "@applicaster/zapp-react-native-utils/functionUtils"; import React from "react"; type Return = (index: number) => void; type Predicate = ( entry: ZappUIComponentProps["zappPipesData"]["data"]["entry"], index: number, numberOfColumns: number ) => boolean; type Props = { ifNeeded: Predicate; loadNextData: () => void; entry: ZappUIComponentProps["zappPipesData"]["data"]["entry"]; numberOfColumns?: number; }; const handleLoadNextPage = ( ifNeeded: ( entry: ZappEntry[], index: number, numberOfColumns?: number ) => boolean, loadNextData: () => void, entry: ZappEntry[], numberOfColumns ) => (index: number) => { /** * Lazy-Loading, invoke nextLoadData if we reach the end of the List */ if (ifNeeded(entry, index, numberOfColumns)) { loadNextData(); } }; export const useLoadNextPageIfNeeded = ({ ifNeeded, loadNextData = noop, entry, numberOfColumns = 0, }: Props): Return => { return React.useCallback( handleLoadNextPage(ifNeeded, loadNextData, entry, numberOfColumns), [ifNeeded, loadNextData, entry, numberOfColumns] ); };