@readr-media/react-infinite-scroll-list v1.3.0
@readr-media/react-infinite-scroll-list · 
The component progressively fetches data when page being scrolled to bottom and renders them.
Usage Guide
Props Explanation
| Name | Data Type | isRequired | Description |
|---|---|---|---|
| initialList | T[] 1 | false | initial data from upstream to be rendered |
| amountOfElements 2 | number | false | maximum of items to be rendered |
| pageAmount | number | false | Maxmium of fetches (fetchListInPage) to be fired |
| pageSize | number | true | The amount of items per scroll page |
| isAutoFetch | boolean | false (default: true) | Whether data fetch is executed atomatically |
| fetchListInPage | (page: number) => Promise<T[]> 1 | true | The function to fetch more data, which will be executed when page is scrolled to bottom |
| children | (renderList: T[], customTriggerRef?: React.RefObject<HTMLElement>) => ReactNode 1 | true | The function to render data list |
| loader | ReactNode | false | The loader element to be displayed during data loading |
| hasCustomTrigger | boolean | false | Wether the custom trigger ref will be provided throught children callback to set up trigger point |
What is T
T is generic type for data coming from fetches (fetchListInPage) or to be used by render function (children).
It can be set explicitly or infered implicitly.
You should ensurce T in initialList, fetchListInPage and children that represents the same type.
Relation between amountOfElements, pageAmount and pageSize
Neither
amountOfElementsnorpageAmountare setfetches will be fired util no more data
If only
amountOfElementsis setfetches will be fired util no more data or amount of items reached
amountOfElementsIf only
pageAmountis setfetches will be fired util no more data or amount of fetches reached
pageAmountIf both
amountOfElementsnorpageAmountare setfetched will be fired util one of following situations:
- no more data
- amount of items reached
Math.min(amountOfElements, pageAmount * pageSize)
Trigger loadmore
- Default (hasCustomTrigger: false)
- This component appends an element which triggers load-more effect at the end of the element list by default
- Custom Trigger (hasCustomTrigger: true)
- Set the prop
hasCustomTriggertotrueand use thecustomTriggerRefas the second argument from thechildrencallback to to designate element as trigger point (check custom-trigger-example)
- Set the prop
Note
The props hasCustomTrigger and isAutoFetch are in XOR relationship which means that hasCustomTrigger can't be set when isAutoFetch is set, vice versa.
Development Guide
Installation
yarn install
Development
$ yarn dev
// or
$ npm run dev
// or
$ make devBuild
$ npm run build
// or
$ make buildPublish
After executing Build scripts, we will have ./dist and /lib folders,
and then we can execute publish command,
npm publishNote: before publish npm package, we need to bump the package version first.
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago