ext-react-infinite-scroller
v1.2.1
Published
Infinite scroll component for React in ES6
Readme
React Infinite Scroller
Infinitely load content using a React Component. This fork maintains a simple, lightweight infinite scroll package that supports both window and scrollable elements.
Installation
npm install react-infinite-scroller --saveyarn add react-infinite-scrollerHow to use
import InfiniteScroll from 'react-infinite-scroller';Window scroll events
<InfiniteScroll
pageStart={0}
loadMore={loadFunc}
hasMore={true || false}
loader={<div className="loader" key={0}>Loading ...</div>}
>
{items} // <-- This is the content you want to load
</InfiniteScroll>DOM scroll events
<div style="height:700px;overflow:auto;">
<InfiniteScroll
pageStart={0}
loadMore={loadFunc}
hasMore={true || false}
loader={<div className="loader" key={0}>Loading ...</div>}
useWindow={false}
>
{items}
</InfiniteScroll>
</div>Custom parent element
You can define a custom parentNode element to base the scroll calulations on.
class InfiniteScrollOverride extends InfiniteScroll {
/**
* We are overriding the getParentElement function to use a custom element as the scrollable element
*
* @param {any} el the scroller domNode
* @returns {any} the parentNode to base the scroll calulations on
*
* @memberOf InfiniteScrollOverride
*/
getParentElement(el) {
if (this.props.scrollParent) {
return this.props.scrollParent;
}
return super.getParentElement(el);
}
render() {
return super.render();
}
}Props
| Name | Type | Default | Description|
|:---- |:---- |:---- |:----|
| element | Component | 'div' | Name of the element that the component should render as.|
| hasMore | Boolean | false | Whether there are more items to be loaded. Event listeners are removed if false.|
| initialLoad | Boolean | true | Whether the component should load the first set of items.|
| isReverse | Boolean | false | Whether new items should be loaded when user scrolls to the top of the scrollable area.|
| loadMore | Function | | A callback when more items are requested by the user. Receives a single parameter specifying the page to load e.g. function handleLoadMore(page) { /* load more items here */ } }|
| loader | Component | | A React component to render while more items are loading. The parent component must have a unique key prop. |
| pageStart | Number | 0 | The number of the first page to load, With the default of 0, the first page is 1.|
| threshold | Number | 250 | The distance in pixels before the end of the items that will trigger a call to loadMore.|
| useCapture | Boolean | false | Proxy to the useCapture option of the added event listeners.|
| useWindow | Boolean | true | Add scroll listeners to the window, or else, the component's parentNode.|
