1.1.0 • Published 4 years ago

react-scoll v1.1.0

Weekly downloads
12
License
ISC
Repository
github
Last release
4 years ago

React-Roll

infinite scroller, record scroll position, like twitter's timeline

🇦🇺English |🇨🇳 简体中文

Features

  • Optimization big list
  • infinite scroll loading
  • Record list scroll state
  • Support different height list items

DEMO

different height items

simple-demo

select city of china

city-select-demo

infinite scroll to load data

infinite-load-demo

record scroll status

record-demo

Install

npm install react-roll

Usage

* Quick use!

import {Provider, Scroller} from 'react-roll'

const App () => (
  <Provider>
    <Scroller element={ListItem}/>
  </Provider>
)

* How to pass data to each list item?

async function fetch(page, push) {
  const list = await getData({page}) // list: [{title}]
  push(list)
}

const ListItem = ({title}) => <div>{title}</div>

// As long as there is onFetch prop, that you can infinite load list data
<Provider>
  <Scroller element={ListItem} onFetch={fetch} />
</Provider>

* Make scrolling more precise

// If the list items have different heights, set an average height!
// And If the list items have same heights, set an average height too!
<Provider>
  <Scroller averageHeight={200} element={ListItem} onFetch={fetch} />
</Provider>

* No need to scroll infinitely, just optimize the list

<Provider source={bigList}>
  <Scroller averageHeight={50} element={ListItem}>
</Provider>

* Insert elements other than lists

<Provider source={bigList}>
  <Scroller
    {/* other elements */}
    upperRender={() => <Header />}
    averageHeight={50}
    element={ListItem}>
</Provider>

API

Scroller

prop(extends DIV)descriptiontypedefault
elementlist item componentReact.Element
averageHeightaverage height of list itemNumber350
lengthThe actual number to render, If not set, it will be calculated by the algorithmNumber
onFetchthe method of fetch dataFunction
upperRenderinsert elements other than listsFunction

Provider

propdescriptiontypedefault
sourcedata of list, make scrolling components controlledArray