iter(g254): 派生后页码越界回写内核状态
This commit is contained in:
@@ -193,4 +193,21 @@ swapped.subscribe(() => (notified += 1));
|
||||
swapped.setRows(sameRows);
|
||||
assert(notified === 1 && swapped.getVisibleRows().total === 4, 'setRows 换引用:通知一次并重算 total');
|
||||
|
||||
// 页码收敛:数据缩水后越界页码范围回生效页,state 与视图保持一致(不再滞留旧页码)
|
||||
const clamp = createTable({
|
||||
data: users,
|
||||
columns: [{ key: 'name', header: 'Name' }],
|
||||
rowKey: 'id',
|
||||
plugins: [paginationPlugin()],
|
||||
initialState: { pagination: { page: 3, pageSize: 2 } },
|
||||
});
|
||||
assert(clamp.getVisibleRows().rows.length === 1 && clamp.getPageInfo().page === 3, '收敛前:5 行 / 每页 2 = 3 页,停在第 3 页');
|
||||
clamp.setRows(users.slice(0, 1)); // 只剩 1 行 → 总页数 1
|
||||
assert(clamp.getPageInfo().page === 1 && clamp.getState().pagination.page === 1, '数据缩水后:越界页码回写为 1(state 与生效页一致)');
|
||||
clamp.setRows(users); // 数据恢复 5 行
|
||||
assert(clamp.getVisibleRows().rows.length === 2 && clamp.getState().pagination.page === 1, '数据恢复后:仍停第 1 页,不记忆已失效的旧页码');
|
||||
clamp.dispatch({ type: 'setPage', page: 9 }); // 显式跳到越界页
|
||||
assert(clamp.getVisibleRows().rows.length === 1 && clamp.getState().pagination.page === 3, '跳越界页:派生钳制后回写为末页 3');
|
||||
assert(clamp.getPageInfo().totalPages === 3, '收敛不改分页快照语义(totalPages 仍按 total 推算)');
|
||||
|
||||
console.log('SMOKE OK');
|
||||
|
||||
Reference in New Issue
Block a user