Layui表格分页默认页码必须显式设置page: { curr: 1 },curr为正整数且需与后端返回、重载参数、laypage.render及parseData中返回的curr保持一致,否则UI与数据错位。

table.render() 初始化时怎么设默认页码
默认就是第一页,但必须显式写 page: { curr: 1 },不能只写 page: true。Layui 不会从 page: true 推导出当前页,它只认配置里明确写的 curr 值。
常见错误是漏掉 curr,比如:page: { limit: 20, limits: [20, 50] } —— 这样 curr 为 undefined,Layui fallback 到内部默认值(通常是 1),但某些场景下会导致分页栏不渲染「当前第 x 页」文案,或翻页按钮异常灰掉。
-
curr必须是正整数,写成字符串如"1"或null都会失效 - 如果后端返回的初始数据不是第一页(比如接口强制返回第 3 页),你得在
parseData里手动提取并 return 对应的curr,否则前端页码和实际数据错位 -
page: { curr: 1 }和where: { page: 1 }是两回事:前者控制分页 UI 和内部状态,后者只是请求参数;两者最好保持一致,避免混淆
table.reload() 重载时如何保持或切换当前页码
table.reload() 默认把页码重置为 1,这不是 bug,是设计行为——它会丢弃当前实例的分页上下文,完全按新传入的配置重新初始化。想留在原页,必须显式传 page: { curr: n }。
比如用户正在看第 5 页,点击“刷新”按钮,你调 table.reload('demo', { where: { status: 'active' } }),结果页面跳回第 1 页。正确写法是:table.reload('demo', { where: { status: 'active' }, page: { curr: 5 } })。
- 别依赖
window.currPage这类全局变量,reload不会自动读它 - 如果用
done回调动态改过curr(比如根据后端返回修正页码),reload前得先缓存这个值,再传进去 -
curr超出总页数时,Layui 不会自动纠偏,UI 可能显示空白页或报错,建议在jump或done里做边界校验
laypage.render() 手动接管分页时怎么设默认页码
当你禁用表格自带分页(page: false),改用 laypage.render() 管理页码栏,curr 就是它的核心配置项,必须显式传入。
示例:laypage.render({ elem: 'pageDemo', count: 100, curr: 3, jump: function(obj){ ... } }); —— 这样渲染出来直接定位到第 3 页,且跳转框默认显示 3。
-
curr必须配合count(总条数)才有意义,否则页码计算全乱 - 如果
count来自异步接口,别在render()里硬编码,应在接口返回后调用laypage.render(),否则页码栏可能显示 0 页或无限加载 - 不要试图通过 DOM 操作修改页码显示(比如
$('.layui-laypage-curr').text('3')),Layui 内部状态不同步,后续点击会出错
为什么后端返回的 curr 字段对前端页码没影响
Layui 的分页状态完全由前端维护,table.config[id].page.curr 是唯一可信来源。后端响应里的 curr 字段(比如 { data: [], curr: 5, count: 100 })不会被自动读取,除非你在 parseData 里手动赋值。
也就是说,即使后端返回了正确的当前页码,Layui 也视而不见。如果你需要服务端驱动页码(比如搜索后保持上次位置),就得在 parseData 中显式返回:return { data: res.data, count: res.count, curr: res.curr };。
-
parseData返回的curr仅用于本次渲染,不影响下次reload的默认值 - 如果
parseData没返回curr,Layui 仍用配置里写的page.curr,哪怕后端返回了curr: 7 - 别指望
response.currName—— Layui 没这个配置项,只有countName和dataName
curr、重载时传的 curr、parseData 返回的 curr、以及 laypage.render() 里的 curr —— 少一个,UI 和数据就可能脱节。


















