当前位置:首页 > React

react 实现长列表案例

2026-01-27 16:10:00React

实现长列表的常用方法

虚拟滚动技术(Virtual Scrolling) 虚拟滚动通过仅渲染当前可视区域内的列表项来提升性能,适合超长列表场景。React生态中常用库如react-windowreact-virtualized

安装react-window

npm install react-window

基础实现示例:

import { FixedSizeList as List } from 'react-window';

const Row = ({ index, style }) => (
  <div style={style}>Row {index}</div>
);

const LongList = () => (
  <List
    height={500}
    itemCount={1000}
    itemSize={35}
    width={300}
  >
    {Row}
  </List>
);

分页加载方案

滚动加载(Infinite Scroll) 监听滚动事件动态加载数据,常用库如react-infinite-scroll-component

安装:

npm install react-infinite-scroll-component

实现示例:

import InfiniteScroll from 'react-infinite-scroll-component';

const LongList = ({ items, fetchMoreData, hasMore }) => (
  <InfiniteScroll
    dataLength={items.length}
    next={fetchMoreData}
    hasMore={hasMore}
    loader={<h4>Loading...</h4>}
  >
    {items.map((item, index) => (
      <div key={index}>{item.content}</div>
    ))}
  </InfiniteScroll>
);

性能优化技巧

避免不必要的重新渲染 使用React.memo包裹列表项组件,或通过useMemo缓存计算结果:

const MemoizedRow = React.memo(({ data, index }) => {
  return <div>{data[index]}</div>;
});

键值优化 确保每个列表项有稳定唯一的key,避免使用数组索引:

items.map(item => (
  <div key={item.id}>{item.name}</div>
))

原生实现方案

Intersection Observer API 不依赖第三方库的实现方式,通过观察元素可见性触发加载:

const observer = new IntersectionObserver((entries) => {
  if (entries[0].isIntersecting) {
    loadMoreItems();
  }
});

// 绑定到列表底部元素
observer.observe(document.querySelector('#loader'));

react 实现长列表案例

标签: 案例列表
分享给朋友:

相关文章

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表 在 Vue 中实现搜索列表功能,通常需要结合数据绑定、计算属性和事件监听。以下是一个完整的实现方案: 数据准备与模板结构 <template> <div&…

网页制作css 列表

网页制作css 列表

创建CSS列表样式 使用CSS可以自定义HTML列表(有序列表<ol>和无序列表<ul>)的外观,包括项目符号、缩进、颜色等。以下是一些常见的列表样式方法: 基础列表样式 通…

h5 实现列表

h5 实现列表

列表实现方法 在HTML5中,可以通过多种方式实现列表,包括无序列表、有序列表和自定义列表。以下是具体的实现方法。 无序列表 无序列表使用<ul>标签,列表项使用<li>标签…

vue实现列表循环

vue实现列表循环

列表循环的实现方式 在Vue中实现列表循环主要依赖于v-for指令,该指令基于源数据多次渲染元素或模板块。 基础数组循环 使用v-for遍历数组时,语法为item in items或(item, i…

jquery列表

jquery列表

jQuery 列表操作 jQuery 提供了多种方法来操作 HTML 列表(如 <ul> 或 <ol>),包括动态添加、删除、修改列表项,以及事件绑定等。 创建列表 使用…

vue实现奇偶列表

vue实现奇偶列表

Vue实现奇偶列表样式 在Vue中实现列表项的奇偶不同样式,可以通过多种方式实现。以下是几种常见方法: 使用v-for和动态class绑定 通过v-for循环生成列表时,利用索引值判断奇偶性并绑定…