1.0.15 • Published 3 years ago

scroll-lazy-load v1.0.15

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

scroll-lazy-load

描述

滚动加载组件

ScrollLazyLoad Props

属性名类型是否必填描述默认值
loadMore() => Promise\<any>加载更多函数-
hasMore(data: any) => Boolean是否还有更多数据需要加载-
onError(data: any) => BooleanloadMore 请求报错函数-
renderLoading() => React.ReactNode | React.ReactNode加载过程中 loading 展示Loading...
renderNoMore() => React.ReactNode | React.ReactNode无更多数据需要加载展示暂无更多数据
intersectionConfigIntersectionConfig详见 IntersectionConfig-

IntersectionConfig

属性名类型是否必填描述默认值
rootElement | Document | null滚动区域的根节点ScrollLazyLoad 组件父节点
rootMarginstring 滚动区域 margin-

注:root, rootMargin 参数同 Intersection Observer

例子

import React, { useCallback, useState, useRef } from "react";
import ScrollLazyLoad from "scroll-lazy-load";

const arr = Array(50).fill("test");

const Example = () => {
  const container = useRef() as any;
  const [rows, setRows] = useState(arr);

  const loadMore = useCallback(() => {
    const newRows = [...rows].concat(Array(10).fill("test"));
    return new Promise((resolve) => {
      setTimeout(() => {
        setRows(newRows);
        const randow = Math.random();
        if (randow > 0.5) {
          resolve(true);
        } else {
          resolve(false);
        }
      }, 1000);
    });
  }, [rows]);

  const hasMoreOrNot = useCallback((data) => {
    return data;
  }, []);

  return (
    <div style={{ height: "600px", overflow: "auto" }} ref={container}>
      <ScrollLazyLoad
        loadMore={loadMore}
        hasMore={hasMoreOrNot}
        intersectionConfig={{
          root: container.current,
          rootMargin: "100px",
        }}
      >
        {rows.map((item, index) => {
          return <div key={index}>这是第{index + 1}行</div>;
        })}
      </ScrollLazyLoad>
    </div>
  );
};

export default Example;
1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago