Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Really simple infinite scroll component for React.

License

NotificationsYou must be signed in to change notification settings

tonix-tuft/react-really-simple-infinite-scroll

Repository files navigation

Really simple infinite scroll component for React.

NPM

Installation

npm install --save react-really-simple-infinite-scroll

Install peer dependencies:

npm install --save react react-dom

Usage

importReact,{useState,useCallback,useEffect}from"react";import{ReallySimpleInfiniteScroll}from"react-really-simple-infinite-scroll";// You can use any loading component you want. This is just an example using a spinner from "react-spinners-kit".import{CircleSpinner}from"react-spinners-kit";/** *@type {number} */letitemId=0;/** *@type {Function} */constgenerateMoreItems=numberOfItemsToGenerate=>{constitems=[];for(leti=0;i<numberOfItemsToGenerate;i++){itemId++;items.push({id:itemId,label:`Item${itemId}`,});}returnitems;};exportdefaultfunctionApp(){const[displayInverse,setDisplayInverse]=useState(false);const[hasMore,setHasMore]=useState(true);const[isInfiniteLoading,setIsInfiniteLoading]=useState(true);const[items,setItems]=useState([]);constonInfiniteLoadCallback=useCallback(()=>{setIsInfiniteLoading(true);setTimeout(()=>{constmoreItems=generateMoreItems(25);setItems(items=>items.concat(moreItems));setIsInfiniteLoading(false);},1000);},[]);useEffect(()=>{onInfiniteLoadCallback();},[onInfiniteLoadCallback]);useEffect(()=>{if(items.length>=200){setHasMore(false);}},[items.length]);return(<divclassName="app"><ReallySimpleInfiniteScrollkey={displayInverse}className={`infinite-scroll${items.length&&displayInverse            ?"display-inverse"            :"display-not-inverse"}`}hasMore={hasMore}length={items.length}loadingComponent={<divclassName="loading-component"><divclassName="spinner"><CircleSpinnersize={20}/></div>{" "}<spanclassName="loading-label">Loading...</span></div>}isInfiniteLoading={isInfiniteLoading}onInfiniteLoad={onInfiniteLoadCallback}displayInverse={displayInverse}>{(displayInverse ?items.slice().reverse() :items).map(item=>(<divkey={item.id}className="item">{item.label}</div>))}</ReallySimpleInfiniteScroll><div><buttononClick={()=>setDisplayInverse(displayInverse=>!displayInverse)}>          Toggle displayInverse</button></div></div>);}

License

MIT ©Anton Bagdatyev (Tonix)

About

Really simple infinite scroll component for React.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp