You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Axios请求后筛选20条数据?除SQL行号查询外的方法

前端提取指定数量数据的实现方案(无需SQL分页)

下面是几种在前端从100条数据中提取20条的可行方法,不需要修改后端SQL查询:

1. 接口回调中直接截取数据存入状态

拿到接口返回的完整数据后,用数组的slice方法直接截取需要的20条,再存入state。这种方式适合只需要展示固定20条的场景,节省后续渲染的计算量。

const [list, setList] = useState([]);

useEffect(() => {
    axios.get('http://localhost:8080/movielist/getMovieList_boxoffice')
        .then(res => {
            // slice(startIndex, endIndex) 左闭右开,这里取前20条
            const targetData = res.data.slice(0, 20);
            setList(targetData);
        })
        .catch(err => console.log(err))
}, [already_released]);

// 直接渲染处理后的列表
{list.map((item, index) => (
    <ol key={index}>
        <li>objectnum = {index + 1}</li>
    </ol>
))}

2. 保留完整数据,渲染时截取

如果需要保留全部100条数据用于其他操作(比如后续切换分页),可以把完整数据存在state里,渲染的时候再截取20条展示。

const [fullList, setFullList] = useState([]);

useEffect(() => {
    axios.get('http://localhost:8080/movielist/getMovieList_boxoffice')
        .then(res => {
            setFullList(res.data); // 保存完整的100条数据
        })
        .catch(err => console.log(err))
}, [already_released]);

// 渲染时只取前20条
{fullList.slice(0, 20).map((item, index) => (
    <ol key={index}>
        <li>objectnum = {index + 1}</li>
    </ol>
))}

3. 分页式提取(灵活切换不同批次的20条)

如果需要支持分页功能,比如切换查看第1-20、21-40条,可以通过状态管理当前页码,动态计算要截取的数据范围。

const [fullList, setFullList] = useState([]);
const [currentPage, setCurrentPage] = useState(1);
const pageSize = 20; // 每页固定20条

useEffect(() => {
    axios.get('http://localhost:8080/movielist/getMovieList_boxoffice')
        .then(res => {
            setFullList(res.data);
        })
        .catch(err => console.log(err))
}, [already_released]);

// 计算当前页要展示的数据
const currentPageData = fullList.slice(
    (currentPage - 1) * pageSize,
    currentPage * pageSize
);

// 渲染当前页数据
{currentPageData.map((item, index) => (
    <ol key={index}>
        <li>objectnum = {(currentPage - 1) * pageSize + index + 1}</li>
    </ol>
))}

// 分页控制按钮(示例)
<div>
    <button onClick={() => setCurrentPage(prev => Math.max(prev - 1, 1))}>上一页</button>
    <button onClick={() => setCurrentPage(prev => Math.min(prev + 1, Math.ceil(fullList.length / pageSize)))}>下一页</button>
</div>

注意点

  • slice是数组的纯函数,不会修改原数组,只会返回新的子数组,安全可靠
  • slice(start, end)是左闭右开区间,比如slice(20,40)会提取索引20到39的元素,正好20条
  • 保留完整数据的方案,后续切换数据批次不需要重新请求接口,体验更流畅

内容的提问来源于stack exchange,提问作者Knowledge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:10:24