0.2.0 • Published 5 years ago

react-infinite-scroll-loading v0.2.0

Weekly downloads
7
License
MIT
Repository
github
Last release
5 years ago

React Infinite Scroll Loading

Infinite scroll component for React.

Installation and Usage

$ npm i react-infinite-scroll-loading -S
# or
$ yarn add react-infinite-scroll-loading
// for commonjs
const InfiniteScrollLoading = require('react-infinite-scroll-loading');

// for es modules
import InfiniteScrollLoading from 'react-infinite-scroll-loading';

Getting Started

Edit red-https-thrgc

Window scroll events

<InfiniteScrollLoading
  pageStart={1}
  hasMore={hasMore && !isLoading}
  loadMore={loadMore}
  resetPage={resetPage}
>
  {
    !!items.length
    && items.map(item => <li key={item.id}>{item.name}</li>)
  }
  {isLoading && <div>Loading...</div>}
</InfiniteScrollLoading>

DOM scroll events

import styled from '@emotion/styled';

const Wrapper = styled('div')`
  height: 660px;
  overflow: auto;
`;

<Wrapper>
  <InfiniteScrollLoading
    pageStart={1}
    hasMore={hasMore && !isLoading}
    loadMore={loadMore}
    resetPage={resetPage}
    useWindow={false}
  >
    {
      !!items.length
      && items.map(item => <li key={item.id}>{item.name}</li>)
    }
    {isLoading && <div>Loading...</div>}
  </InfiniteScrollLoading>
</Wrapper>

Custom parent element

import styled from '@emotion/styled';

const Wrapper = styled('div')`
  height: 660px;
  overflow: auto;
`;

const wrapperRef = useRef();

<Wrapper ref={wrapperRef}>
  <article>
    <InfiniteScrollLoading
      pageStart={1}
      hasMore={hasMore && !isLoading}
      loadMore={loadMore}
      resetPage={resetPage}
      useWindow={false}
      getScrollParent={() => wrapperRef}
    >
      {
        !!items.length
        && items.map(item => <li key={item.id}>{item.name}</li>)
      }
      {isLoading && <div>Loading...</div>}
    </InfiniteScrollLoading>
  </article>

  <aside>...</aside>
</Wrapper>

API

NameTypeDefaultDescription
elementReact.NodedivName of the element that the component should render as.
pageStartnumber0The number of the first page to load, With the default of 0, the first page is 1.
hasMorebooleanfalseWhether there are more items to be loaded. Event listeners are removed if false.
loadMoreloadMore(page: number): voidnullA callback when more items are requested by the user.
resetPagebooleanfalseWhether the component should reset the page start number.
thresholdnumber250The distance in pixels before the end of the items that will trigger a call to loadMore.
useWindowbooleanfalseAdd scroll listeners to the window, or else, the component's parentNode.
getScrollParentgetScrollParent(): React.NodenullOverride method to return a different scroll listener if it's not the immediate parent of InfiniteScrollLoading.
useCapturebooleanfalseProxy to the useCapture option of the added event listeners.
0.2.0

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago