npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@readr-media/react-infinite-scroll-list

v1.2.0

Published

The component progressively fetches data when page being scrolled to bottom and renders them.

Downloads

122

Readme

@readr-media/react-infinite-scroll-list · npm version

The component progressively fetches data when page being scrolled to bottom and renders them.

Usage Guide

Example

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 amountOfElements nor pageAmount are set

    fetches will be fired util no more data

  • If only amountOfElements is set

    fetches will be fired util no more data or amount of items reached amountOfElements

  • If only pageAmount is set

    fetches will be fired util no more data or amount of fetches reached pageAmount

  • If both amountOfElements nor pageAmount are set

    fetched will be fired util one of following situations:

    1. no more data
    2. 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 hasCustomTrigger to true and use the customTriggerRef as the second argument from the children callback to to designate element as trigger point (check custom-trigger-example)

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 dev

Build

$ npm run build
// or
$ make build

Publish

After executing Build scripts, we will have ./dist and /lib folders, and then we can execute publish command,

npm publish

Note: before publish npm package, we need to bump the package version first.