当前位置:首页 > 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

react 实现长列表案例

安装:

npm install react-infinite-scroll-component

实现示例:

react 实现长列表案例

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'));

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

相关文章

vue实现列表全选

vue实现列表全选

实现全选功能的基本思路 在Vue中实现列表全选功能,通常需要结合v-model和计算属性来管理选中状态。全选按钮的状态与列表中所有项的选中状态相互关联。 基础实现方法 准备一个数据列表和对应的选中状…

vue实现列表多选

vue实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以轻松实现多选功能。当复选框被选中或取消选中时,数组会自动更新。 <template>…

vue实现列表页面

vue实现列表页面

Vue 列表页面实现方案 基础列表渲染 使用 v-for 指令渲染数组数据,配合 :key 提升性能: <template> <ul> <li v-for=…

vue列表展开实现

vue列表展开实现

Vue 列表展开实现方法 使用 v-for 和 v-show 控制展开状态 通过 v-for 渲染列表项,配合 v-show 控制子内容的显示隐藏。需要为每个列表项维护一个展开状态。 <tem…

vue实现产品列表

vue实现产品列表

Vue 实现产品列表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目,确保项目环境配置正确。 npm install -g @vue/cli vue create prod…

vue实现列表demo

vue实现列表demo

以下是一个基于 Vue.js 的列表实现示例,包含基础功能与关键代码解析: 基础列表渲染 <template> <div> <ul>…