Rev 3520 | Rev 3532 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useRef, useEffect } from 'react';
import { useNearScreen } from '@hooks';
import { List, Spinner } from '.';
export function InfinityList({
items = [],
renderItem = () => {},
emptyMessage = 'No hay elementos para mostrar',
keyExtractor = (item) => item.id,
loading = false,
hasMore = false,
onEnd
}) {
const loaderRef = useRef(null);
const [isIntercepting] = useNearScreen({
externalRef: loaderRef,
once: false,
rootMargin: '20px'
});
useEffect(() => {
if (isIntercepting) onEnd();
}, [isIntercepting]);
return (
<>
<List
items={items}
emptyMessage={emptyMessage}
keyExtractor={keyExtractor}
renderItem={renderItem}
/>
{hasMore && <div ref={loaderRef}>{loading && <Spinner />}</div>}
</>
);
}