Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3511 | Rev 3527 | 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,
13
  onEnd
14
}) {
15
  const loaderRef = useRef(null);
16
 
17
  const [isIntercepting] = useNearScreen({
18
    externalRef: loaderRef,
19
    once: false,
20
    rootMargin: '20px'
21
  });
22
 
23
  useEffect(() => {
24
    if (isIntercepting) onEnd();
25
  }, [isIntercepting]);
26
 
27
  return (
28
    <>
29
      <List
30
        items={items}
31
        emptyMessage={emptyMessage}
32
        keyExtractor={keyExtractor}
33
        renderItem={renderItem}
34
      />
35
      <div ref={loaderRef}>{loading && <Spinner />}</div>
36
    </>
37
  );
38
}