layui table 的 page 配置中,需将 pageSize 变量显式设为 page 对象的 limit 属性(如 page: { limit: pageSize }),且 limit 必须为正整数、位于 page 子对象内,首次渲染生效,动态修改需调用 table.reload()。
layui table 的 page 配置中如何设置默认每页条数
layui 的 table.render() 默认每页显示 30 条,想改成你自己的变量(比如 pagesize),关键不是改 css 或 dom,而是把变量正确传进 page 配置的 limit 字段里。
注意:limit 必须是数字类型,不能是字符串;且它只在首次渲染时生效,后续翻页会沿用这个值,除非你手动调用 table.reload() 并传入新 limit。
-
page设为true时,limit必须显式写在page对象里,不能只写在顶层配置 - 如果
page是对象,limit是必填项(否则回退到默认 30) - 变量需提前定义好,比如
const pageSize = 20;,别在render()里现场算或异步取
为什么直接写 limit: pageSize 有时不生效
常见原因是把 limit 放错了位置 —— 它必须属于 page 子对象,而不是和 elem、url 并列。写错会导致 layui 完全忽略该配置,静默 fallback 到 30。
错误写法:
table.render({
elem: '#demo',
url: '/api/list',
limit: pageSize, // ❌ 这里无效!
page: true
});
正确写法:table.render({
elem: '#demo',
url: '/api/list',
page: {
limit: pageSize // ✅ 必须在这里
}
});
- 若同时用了
limits(下拉可选条数),limit值必须是limits数组中的某一项,否则分页器初始化会卡住或报错 - 服务端接口也得按这个
limit值做分页查询,layui 不会自动帮你截数据
动态修改已渲染表格的每页条数
首次渲染后想改每页条数(比如用户点“每页 50 条”按钮),不能只改变量再等下次翻页 —— 必须主动触发重载。
- 用
table.reload('yourId', { page: { limit: newLimit } }),其中'yourId'是你 render 时设的id(推荐加,否则只能用table.reload()全局重载) - reload 会自动触发一次请求,带上新的
limit和当前curr(页码),服务端要能识别limit参数 - 如果不想刷新当前页数据,只想改下拉选项,得自己操作分页器 DOM,但不推荐 —— layui 没暴露相关 API,容易和内部状态不同步
兼容性与边界注意点
layui 2.8+ 对 limit 更严格:若传了非正整数(如 0、负数、null),控制台会警告并强制设为 10;旧版可能静默转成 30。
-
limit小于 1 时,layui 会取Math.max(1, Math.floor(limit)),所以limit: 0.5会变成 1 - 移动端小屏下,过大的
limit(如 200)可能导致页面卡顿或内存溢出,尤其表格列多、单元格内容复杂时 - 如果你用的是 layui 的服务端分页(
page: true+url),确保后端返回的count总数准确,否则翻页按钮数量会错乱
真正麻烦的不是设这个值,而是前后端对齐:前端改了 limit,后端没按它分页,或者前端没把 limit 传给后端,结果页面看起来一切正常,实际数据漏了一半。











