专题归档 · 2025 年 9 月(编辑分组,非实际写作日期)
实习踩坑:分页选择用户,为什么上一页的人没了?
从管理端用户选择组件的跨页丢选现象理解当前页状态、全局状态与回调重入。
我发现的页面问题
当时最直观的问题是:选中后面页面的用户,之前页面的勾选状态就消失了。 关键不在每页人数,而是跨页选择没有被持续保存。
检查选择状态时,我发现存在一个保存已选用户 ID 的 selection 对象。但切页后只能恢复当前页展示的用户,之前其他页的勾选并没有被正确保留。
需要区分的三种集合
当时明确列出了三个关注点:所有已选 ID、当前页用户 ID、当前页已选 ID。翻页不能把全局已选集合直接重置成当前页组件回传的那一部分。
另一个细节是组件行为:先改变表格选中状态可能触发 selection-change,反过来又修改保存的集合。旧笔记因此引入了一个设置中标志,在程序恢复选择状态时跳过用户触发的更新逻辑。
还需要注意的状态边界
当时也讨论了父组件只传入 ID,但保存接口需要完整用户信息的情况。它提醒我区分组件内部选中态与实际持久化需要的数据;不过此处没有重贴企业接口样本或测试账号。
这是原始问题与方案回顾,不代表迁移后的项目一直使用相同实现。