如何在 React 中创建加载更多逻辑

2025-06-10

如何在 React 中创建加载更多逻辑

如何在 React 中创建加载更多逻辑

通常我们倾向于使用后端 API 来实现加载更多逻辑,传入一个跳过值,后端 API 会返回下一组数据。但如果我们想在前端针对某些特定情况实现相同的逻辑,该怎么办呢?本文将学习如何在 React 中创建加载更多逻辑。

查看后端更好的分页方法

问题

假设我们在前端有一个包含 100 个对象的数组,并且我们想一次只显示 n 个项目,并且下一组数据将在单击 l* oad more * 按钮时加载。

我们通常使用后端来做这件事,我们传递跳过值,它会返回下一组数据,但现在我们想在我们的 React 前端做同样的事情。

解决方案

首先,我们将为我们的加载逻辑设置一些变量。

我们的数据的长度是使用LENGTH指定的。

const LENGTH = 50;

之后我创建了一个长度为LENGTH的数组DATA

const DATA = [ ...Array(LENGTH).keys() ];

然后在 UI 中显示一个随机图像,即IMAGE_SRC

const IMAGE_SRC="https://source.unsplash.com/random";

限制为 10。即LIMIT

const LIMIT = 10;
const LENGTH = 50;
const DATA = [ ...Array(LENGTH).keys() ];
const IMAGE_SRC="https://source.unsplash.com/random";
const LIMIT = 10;

现在我们将要写几个状态。

为了简单起见,我们还将使用lodash 的sliceconcat 。

检查我们是否还有更多记录。

const [showMore,setShowMore] = useState(true);

初始渲染列表

const [list,setList] = useState(slice(DATA, 0, LIMIT));

用于管理索引。

const [index,setIndex] = useState(LIMIT);

我们的加载逻辑将会执行以下操作。

  • 它将通过添加 LIMIT 来更新索引。
  • 检查我们是否还有更多记录。
  • 通过将下一组添加到我们的数组来更新我们的列表。
  const loadMore = () =>{
    const newIndex = index + LIMIT;
    const newShowMore = newIndex < (LENGTH - 1);
    const newList = concat(list, slice(DATA, index, newIndex));
    setIndex(newIndex);
    setList(newList);
    setShowMore(newShowMore);
  }

我们的渲染方法将返回图像列表和加载更多按钮。

   <div className="App">
      <div className="image-container">
      {list.map(()=><img src={IMAGE_SRC} alt="random"/>)}
      </div>
      {showMore && <button onClick={loadMore}> Load More </button>}
    </div>

我们的完整组件将会看起来像这样。

import React,{useState} from "react";
import {
  slice, concat, 
} from 'lodash';

import "./styles.css";

const LENGTH = 50;
const DATA = [ ...Array(LENGTH).keys() ];
const IMAGE_SRC="https://source.unsplash.com/random";
const LIMIT = 10;

export default function App() {
  const [showMore,setShowMore] = useState(true);
  const [list,setList] = useState(slice(DATA, 0, LIMIT));
  const [index,setIndex] = useState(LIMIT);

  const loadMore = () =>{
    const newIndex = index + LIMIT;
    const newShowMore = newIndex < (LENGTH - 1);
    const newList = concat(list, slice(DATA, index, newIndex));
    setIndex(newIndex);
    setList(newList);
    setShowMore(newShowMore);
  }
  return (
    <div className="App">
      <div className="image-container">
      {list.map(()=><img src={IMAGE_SRC} alt="random"/>)}
      </div>
      {showMore && <button onClick={loadMore}> Load More </button>}
    </div>
  );
}

您将会看到类似这样的输出。

我们的 React Frontend 加载更多逻辑已准备就绪。

编辑 t32ld

鏂囩珷鏉ユ簮锛�https://dev.to/narendersaini32/how-to-create-load-more-logic-in-react-474m
PREV
如何用自然语言编写正则表达式回答:为什么人们要捍卫正则表达式语法?
NEXT
使用 Tailwind CSS 设置 create-react-app