fix(login): 勾选跨页保留,并去掉 loadTasks 的多余依赖

两个自己引入的问题:
- loadTasks 依赖 selectedAllMatching 会让每次翻页重建回调,进而触发
  上面的 effect 重新加载标签(多余请求);
- 翻页静默清空勾选会让人困惑(「选了 10 个翻页就没了」),改为
  preserveSelectedRowKeys 跨页保留,删除数量在按钮上明确显示。
This commit is contained in:
yml2213
2026-10-03 10:39:53 +08:00
parent a0db26def3
commit 7293d758f1
+3 -4
View File
@@ -217,15 +217,12 @@ export default function LoginTasksPage() {
});
setTasks(data.items);
setTaskTotal(data.total);
// 翻页/筛选后清掉失效的勾选,避免「选中了看不见的行」。
const visible = new Set(data.items.map((t) => t.id));
setSelectedRowKeys((prev) => (selectedAllMatching ? prev : prev.filter((k) => visible.has(k))));
} catch {
// 忽略轮询失败,下一次定时刷新会继续尝试。
} finally {
tasksLoadingRef.current = false;
}
}, [batchId, taskPage, taskPageSize, taskStatus, selectedAllMatching]);
}, [batchId, taskPage, taskPageSize, taskStatus]);
const hasActiveTasks = useMemo(
() => tasks.some((task) => ['pending', 'running'].includes(task.status)),
@@ -700,6 +697,8 @@ export default function LoginTasksPage() {
sticky
rowSelection={{
selectedRowKeys,
// 跨页保留勾选:翻页时不清空,否则用户「选了 10 个翻页就没了」。
preserveSelectedRowKeys: true,
onChange: (keys) => {
setSelectedRowKeys(keys as number[]);
setSelectedAllMatching(false);