0

0

如何在 MUI Pagination 组件旁添加每页显示数量下拉选择器

聖光之護

聖光之護

发布时间:2026-01-22 10:41:05

|

745人浏览过

|

来源于php中文网

原创

如何在 MUI Pagination 组件旁添加每页显示数量下拉选择器

本文介绍如何在 material-ui(mui)的 pagination 组件旁集成一个“每页显示条数”下拉菜单(select),通过动态更新 `itemsperpage` 实现分页数据量的灵活控制,并同步修正总页数计算逻辑。

要在 MUI 的 组件中补充“每页显示数量”功能,核心在于:解耦固定分页限制(如原 TABLE_LIMIT),改用受控状态管理每页条数,并联动更新总页数(count)与数据请求逻辑

以下是完整实现步骤与推荐代码结构:

✅ 步骤一:引入必要组件并声明状态

import React, { useState, useCallback } from 'react';
import { Pagination, Select, MenuItem, Box } from '@mui/material';

// 假设你已有这些 props 或 state
// totalCount: 总数据条数(来自 API)
// pageNumber: 当前页码(1-based)
// onPageChange: 处理页码切换(如更新 URL 或触发 fetch)
// onItemsPerPageChange: 可选 —— 用于响应每页数量变更(例如重置页码为 1 并重新拉取数据)

✅ 步骤二:定义每页条数状态与选项

const [itemsPerPage, setItemsPerPage] = useState(10);
const pageSizeOptions = [5, 10, 20, 50, 100];

✅ 步骤三:渲染 Pagination + Select 组合

注意关键点:

CAPTURELAB
CAPTURELAB

一款面向Steam游戏玩家的AI工具,自动生成集锦

下载
  • count 必须基于 Math.ceil(totalCount / itemsPerPage) 动态计算;
  • onChange 中需同时处理页码跳转与页大小变更(建议将页码重置为 1,避免越界);
  • 使用
    包裹实现水平对齐,提升布局可控性。
    
      {/* 分页控件 */}
       {
          // 页码变更时,通常应保持 itemsPerPage 不变
          onPageChange(value); // 示例:setPageNumber(value)
        }}
        variant="outlined"
        shape="rounded"
        boundaryCount={1}
      />
    
      {/* 每页显示数量选择器 */}
      
    

    ? 注意事项与最佳实践

    • 页码越界防护:当 itemsPerPage 增大后,原 pageNumber 可能超过新总页数(如原 100 条/10 页 → 改为 50 条/2 页,但当前页仍为 5)。因此 onItemsPerPageChange 中强制 onPageChange(1) 是合理且必要的。
    • 服务端分页适配:确保你的数据请求逻辑(如 fetchData(page, limit))使用了最新的 itemsPerPage,而非硬编码的 TABLE_LIMIT。
    • 无障碍支持
    • 响应式建议:在小屏幕上可考虑将 Select 移至 Pagination 上方或下方,使用 flexDirection="column" 配合 sx={{ flexDirection: { xs: 'column', sm: 'row' } }}。

    通过以上改造,你不仅实现了 UI 层的“每页显示”功能,更构建了一个可扩展、可维护的分页控制体系——用户可自由切换密度,系统自动保障数据一致性与交互合理性。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.11.20

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

37

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

17

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

227

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

59

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

14

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

6

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

27

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.9万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

React核心原理新老生命周期精讲
React核心原理新老生命周期精讲

共12课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号