Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3520 | Rev 3532 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3511 stevensc 1
import React, { useRef, useEffect } from 'react';
2
 
3
import { useNearScreen } from '@hooks';
4
 
5
import { List, Spinner } from '.';
6
 
7
export function InfinityList({
8
  items = [],
9
  renderItem = () => {},
10
  emptyMessage = 'No hay elementos para mostrar',
3520 stevensc 11
  keyExtractor = (item) => item.id,
3511 stevensc 12
  loading = false,
3527 stevensc 13
  hasMore = false,
3511 stevensc 14
  onEnd
15
}) {
16
  const loaderRef = useRef(null);
17
 
18
  const [isIntercepting] = useNearScreen({
19
    externalRef: loaderRef,
20
    once: false,
21
    rootMargin: '20px'
22
  });
23
 
24
  useEffect(() => {
25
    if (isIntercepting) onEnd();
26
  }, [isIntercepting]);
27
 
28
  return (
29
    <>
30
      <List
31
        items={items}
32
        emptyMessage={emptyMessage}
33
        keyExtractor={keyExtractor}
34
        renderItem={renderItem}
35
      />
3527 stevensc 36
 
37
      {hasMore && <div ref={loaderRef}>{loading && <Spinner />}</div>}
3511 stevensc 38
    </>
39
  );
40
}