Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-virtualized-list

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-virtualized-list

`react-virtualized-list` 是一个专为处理大型数据集而设计的高性能 React 虚拟组件库,提供虚拟化列表、无限滚动、懒加载和动态数据更新等功能。通过使用 `IntersectionObserver` 精确管理可见性,优化性能并支持灵活的渲染和加载行为配置。仓库提供了详细的安装说明、使用示例和全面的 API 文档,适合快速集成和定制。

  • 0.0.4-beta1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

react-virtualized-list

react-virtualized-list 是一个专为处理大型数据集而设计的高性能 React 虚拟组件库,提供虚拟化列表、无限滚动、懒加载和动态数据更新等功能。通过使用 IntersectionObserver 精确管理可见性,优化性能并支持灵活的渲染和加载行为配置。仓库提供了详细的安装说明、使用示例和全面的 API 文档,适合快速集成和定制。

npm version

English

特性

  • 虚拟化渲染: 仅渲染视口内可见的项目,大幅减少 DOM 操作,提升页面性能。
  • 无限滚动: 支持滚动加载更多数据,适用于需要动态加载内容的场景。
  • 自定义渲染和样式: 可根据需求自定义每个项目的渲染方式和外观样式。
  • 加载和结束消息: 提供加载器和结束消息的配置,优化用户体验。
  • 支持 TypeScript 和 JavaScript: 适用于 TypeScript 和 JavaScript 项目。

安装

使用 npm 或 yarn 安装:

npm install react-virtualized-list
# 或者
yarn add react-virtualized-list

使用

基本用法

以下是一个使用示例,展示如何使用 react-virtualized-list 组件:

import React from 'react';
import VirtualizedList from 'react-virtualized-list';

const itemStyle = {
  height: '50px',
  lineHeight: '40px',
  border: '1px solid blue',
  marginBottom: '10px',
};

const containerStyle = {
  width: '400px', 
  height: '600px', 
  margin: '0 auto', 
  border: '1px solid red', 
  padding: '16px',
  textAlign: 'center',
}

const App = () => {
  // 示例数据
  const data = Array.from({ length: 1000 }, (_, index) => `条目 ${index}`);

  // 加载更多条目的处理函数
  const handleLoadMore = async () => {
    // 加载更多数据的逻辑
  };

  // 渲染每个条目的函数
  const renderItem = (itemData) => <div>{itemData}</div>;

  return (
    <div style={containerStyle}>
      <VirtualizedList
        listData={data}
        renderItem={renderItem}
        containerHeight="600px"
        hasMore={true}
        itemStyle={itemStyle}
        itemLoader={<div>loading ...</div>}
        onLoadMore={handleLoadMore}
        loader={<div>加载中...</div>}
        endMessage={<div>没有更多条目了。</div>}
      />
    </div>
  );
};

export default App;

高级用法场景

探索更多示例和高级用法场景,查看 示例

  1. 虚拟化列表(大型数据列表):通过仅渲染可见部分项目,提升大型数据列表的性能,详见BigDataListExample

  2. 无限滚动:实现无限滚动加载更多内容,适用于新闻、微博、朋友圈等场景,详见 InfiniteScrollList

  3. 懒加载数据: 延迟加载大量图片或视频,减少页面加载时间,详见 LazyImage

  4. 动态数据更新: 按需加载每个列表项的数据,提升性能,详见 DynamicInfiniteList

  5. 视口内自动刷新内容: 自动刷新可见区域内的内容,确保用户获取最新数据,详见 RefreshOnVisible

  6. 自定义渲染: 根据需求定制每个项目的外观和行为,适应各种项目需求。

  7. 与第三方 UI 库配合使用: 可与主流 UI 库等(如Ant Design)灵活配合使用,提供优秀的用户体验。

参数

VirtualizedList 组件接受以下参数:

PropTypeRequiredDefaultDescription
listDataArray[]列表数据数组
renderItem(itemData: T, fetchData: any) => React.ReactNodeitemData => <>{itemData ? itemData : 'Loading ...'}</>渲染每个项目的函数
refreshOnVisibleBooleanfalse当项目可见时是否刷新数据
fetchItemData((item: T) => Promise<any>) null获取每个项目数据的异步函数
containerHeightString'400px'列表容器的高度
listClassNameStringnull列表容器的CSS类名
itemClassNameStringnull每个项目的CSS类名(推荐使用)
itemStyleObject{}项目样式
observerOptionsObject{ root: null, rootMargin: '0px', threshold: 0.1 }视口设置(见下方observerOptions配置表格)
onLoadMore() => Promise<void>null加载更多数据的函数
hasMoreBooleanfalse是否有更多数据
loaderReact.ReactNode''加载更多数据时显示的内容
endMessageReact.ReactNode''所有数据加载完毕时的内容
itemLoaderReact.ReactNode''每个项目加载时显示的占位内容或背景图
emptyListMessageReact.ReactNode''列表为空时的占位内容或背景图

observerOptions 配置表格

OptionDescriptionTypeRequiredDefault
root观察的视口元素。默认 null 表示使用浏览器的视口作为根容器。Elementnull
rootMargin根容器的外边距。可以使用类似 CSS 的值(如 10px, 20%),默认值为 0px。用于扩展或收缩根容器的范围。String'0px'
threshold一个或多个数值数组,表示目标元素可见比例达到这些值时,回调函数会被触发。0.1 意味着目标元素可见部分达到 10% 时触发回调。Array0.1

许可证

react-virtualized-list is released under the MIT License. See the LICENSE file for details.

结论

如果你发现任何问题或有改进建议,请在 GitHub Issues 中提出。

FAQs

Package last updated on 17 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc