1.0.9 • Published 11 months ago

rinfinite-scroll v1.0.9

Weekly downloads
-
License
ISC
Repository
github
Last release
11 months ago

Infinite scroll with react

Import

You can import just InfiniteScroll component and create your own states or you can also import useInfiniteScroll hook.

import InfiniteScroll, { useInfiniteScroll } from "rinfinite-scroll"

Usage

<InfiniteScroll
    page={page}
    setPage={setPage}
    pageCount={15}
    height={350}
    tolerance={150}
    loadMore={loadMore}
    setData={setData}
>
{data.map(item => <span>{item}<span>)}
</InfiniteScroll>

InfiniteScroll component props

proptypedescription
pagenumber *current page state
setPagefunction*set state function for page
pageCountnumber*total page count
tolerancenumbercomponent's scroll bottom tolerance
heightnumber*component's height
loadMorefunction*(page: number, search?: string) => {} load new page's data when page change
stylesobjectcomponent's custom style object
classNamestringclassname
setDatafunction*set state function for data

If you want to use hook

It takes a single argument as object

  const { data, setData, page, setPage, search, setSearch, loadMore } = useInfiniteScroll({
    loadMore: async (currentPage) => {
      const res = await fetch(
      `https://jsonplaceholder.typicode.com/posts?_page=${currentPage}&_limit=10&title_like=${search}`
    )
      return res.json()
    }
  })

useInfiniteScroll hook props

proptypedescription
initialPagenumberinitial page
initialDataarrayinitial data
initialSearchstringinitial search
loadMorefunction*load more data current page when page change or search state change
import InfiniteScroll, { useInfiniteScroll } from "rinfinite-scroll"

const ExampleComponent = () => {
    const { data, setData, page, setPage, search, setSearch, loadMore } = useInfiniteScroll({
    loadMore: async (currentPage) => {
      const res = await fetch(
      `https://jsonplaceholder.typicode.com/posts?_page=${currentPage}&_limit=10&title_like=${search}`
    )
      return res.json()
    }
  })

  return(
    <div 
      <input
        type="text"
        value={search}
        onChange={(e) => setSearch(e.target.value)}
      />
      <InfiniteScroll
        page={page}
        setPage={setPage}
        pageCount={15}
        height={350}
        tolerance={150}
        loadMore={loadMore}
        setData={setData}
      >
        <div style={{ display: "flex", flexDirection: "column" }}>
          {data.length === 0 && <span>Sonuç bulunamadı</span>}
          {data.map((item) => (
            <span
              key={item.id}
              style={{ background: "#ddd", padding: "15px", margin: "10px" }}
            >
              {item.title}
            </span>
          ))}
        </div>
      </InfiniteScroll>
    </div>
  )
}
1.0.9

11 months ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago