必须同时设置page.limit和page.limits,仅设其一无效;limit须为数字且在limits数组中,limits须为长度≥2的纯数字数组,并通过request.limitName匹配后端参数名。

必须同时设置 page.limit 和 page.limits,只改其中一个没用。 Layui 表格默认每页 10 条,但这个“默认”仅在你完全不配 page 时生效;一旦启用分页(page: true 或 page: {}),它就立刻退回到内部硬编码的 30 条——除非你显式指定 limit。
page.limit 必须是数字,且得在 limits 数组里
很多人写 limit: "10"(字符串)或 limit: '10',结果初始化还是 30 条。Layui 只认数字类型。
-
limit值必须是纯数字,比如10,不能是"10"或10.0 -
limits必须是长度 ≥ 2 的纯数字数组,例如[10, 20, 50];写成["10", "20"]或[10]都会导致下拉菜单不渲染或行为异常 -
limit: 10只有在limits: [10, 20, 50]中存在时,才会让下拉框初始选中 “10 条/页”;否则静默 fallback 到第一个值(比如limits: [20, 50]却写limit: 10,实际生效的是 20)
后端参数名不匹配,limit 就等于白设
前端设了 limit: 10,但后端接口期待的是 pageSize 或 per_page,请求发出去的仍是 limit=10,后端收不到,返回空数据或全部数据——而 UI 完全不报错,页面看起来“正常”,只是数据不对。
- 检查后端接收分页参数的实际字段名(常见有
pageSize、size、per_page) - 用
request: { limitName: 'pageSize' }显式映射,确保请求 URL 中出现的是?pageSize=10 - 别依赖后端自动兼容;Layui 不会猜测你的接口协议
reload 时 limit 容易被忽略
调用 table.reload('demo', { where: {...} }) 重载表格,如果没把完整的 page 配置带进去,limit 会回退到上次初始化值或默认 30 ——哪怕你之前 render 时设过 limit: 10。
- reload 必须显式传入
page对象:table.reload('demo', { page: { limit: 10 }, where: {...} }) - 如果用
page: true初始化,reload 时不能只写page: true,得补全整个对象结构 - 更稳妥的做法:把常用分页配置抽成变量,reload 时直接复用,避免漏项
最容易被忽略的一点:Layui 的 limits 控制的是下拉菜单「能选什么」,limit 控制的是「第一次加载用哪个」,而 request.limitName 决定「这个值到底发给后端哪个字段」——三者缺一不可,且类型、取值范围、拼写都得严丝合缝,错一个环节,10 条就变 30 条,还查不出原因。


















