fix(login): 勾选跨页保留,并去掉 loadTasks 的多余依赖
两个自己引入的问题: - loadTasks 依赖 selectedAllMatching 会让每次翻页重建回调,进而触发 上面的 effect 重新加载标签(多余请求); - 翻页静默清空勾选会让人困惑(「选了 10 个翻页就没了」),改为 preserveSelectedRowKeys 跨页保留,删除数量在按钮上明确显示。
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user