Layui table 默认每页30条,需在page对象中显式设置limit(如{limit:10,limits:[10,20,50,100]})才能生效;若后端参数名非limit,须用request:{limitName:'pageSize'}映射;reload时也需传入完整page配置。
layui table 的 page 配置里怎么改每页条数
默认是 30 条,想改成 10 或 50,得在 page 对象里显式设 limit,不能只靠 limits 下拉选项。很多人只配了 limits,结果下拉能选 10/20/50,但首次加载还是按默认 30 来——因为没告诉表格“第一次就该用哪个值”。
实操建议:
-
page必须是对象,不能是true;否则limit不生效 -
limit和limits要一起配,比如:{ limit: 10, limits: [10, 20, 50, 100] } - 如果后端分页参数名不是
limit(比如叫size),得用request重写参数映射,不然前端传了limit=10,后端收不到
后端接口没收到 limit 参数?检查 request 配置
Layui 默认把 limit 当作请求参数发给后端,但很多 Spring Boot 或 ThinkPHP 接口实际接收的是 pageSize 或 per_page。这时候光改前端 limit 没用,请求发出去的还是 limit=10,后端直接忽略。
实操建议:
- 用
request: { limitName: 'pageSize' }把参数名改成后端认的字段 - 如果后端还要额外字段(比如总记录数字段叫
total_count),一并用response映射:response: { countName: 'total_count' } - 调试时打开浏览器 Network 面板,看实际发出的请求 URL 里参数是不是你预期的
用户切了分页条数但表格不刷新?可能是 reload 漏了 page 配置
常见场景:页面上有下拉框让用户手动切换每页条数,你调了 table.reload('id', {...}),但新数据还是按旧 limit 加载——因为 reload 时没把当前选中的 limit 带进去,它默认沿用初始化时的值。
实操建议:
-
reload的配置里必须显式带上page: { limit: xxx },不能只写where: {...} - 如果用了
page: true初始化,reload时也得传完整page对象,否则会退回到默认行为 - 避免在
done回调里反复reload,容易触发无限请求,尤其当limit改小、总页数变少时
移动端或小屏下分页条数下拉被遮挡?limits 别设太多选项
limits 数组太长(比如 [5, 10, 15, 20, 30, 50, 100]),在手机上点分页下拉时,弹层可能超出视口、被截断,用户根本点不到 100 这个选项。
实操建议:
- 移动端优先考虑
[10, 20, 50],最多 4 个;超过的数字对小屏意义不大 - 不要依赖 CSS 强行撑开下拉高度,Layui 的
.layui-table-page .layui-laypage-limits是固定样式,强行改容易破坏整体布局 - 如果业务真需要大分页(如导出场景),建议单独加按钮触发,别塞进表格分页控件里
最常被忽略的一点:Layui 的 limit 是纯前端概念,它只控制“这次请求带多少条”,不改变后端逻辑。如果你后端没做 limit 校验或硬编码了 30 条,前端再怎么配都白搭。










