fix(V0.2): 列表组内排序乐观更新未重排数组, 松手后界面不动
Docker Build and Push / build-image (push) Successful in 1m0s

列表分组渲染按 tasks 数组顺序, reorderTask 此前只给任务打新
sortOrder 字段而保持原数组顺序 —— 松手后界面无任何变化, 看起来
就是组内无法排序 (数据其实已提交)。改为直接按新顺序重建数组,
不在分组内的任务 (孤儿) 追加在尾部。
This commit is contained in:
jif2.zhang
2026-10-25 02:37:39 +08:00
parent 49037371f8
commit c0b55277a4
+7 -2
View File
@@ -114,8 +114,13 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
if (ti < 0) return if (ti < 0) return
rest.splice(after ? ti + 1 : ti, 0, task) rest.splice(after ? ti + 1 : ti, 0, task)
const flat = groups.map((l) => (l === g ? rest : l)).flat() const flat = groups.map((l) => (l === g ? rest : l)).flat()
const orderOf = new Map(flat.map((t, i) => [t.id, i])) const flatIds = new Set(flat.map((t) => t.id))
setTasks((prev) => (prev || []).map((t) => (orderOf.has(t.id) ? { ...t, sortOrder: orderOf.get(t.id) } : t))) // 乐观更新必须重排数组本身 —— 列表分组渲染按数组顺序,
// 只改 sortOrder 字段界面不会动 (打卡侧即按此口径)
setTasks((prev) => [
...flat.map((t, i) => ({ ...t, sortOrder: i })),
...(prev || []).filter((t) => !flatIds.has(t.id)),
])
try { try {
await taskApi.reorder(projectId, flat.map((t) => t.id)) await taskApi.reorder(projectId, flat.map((t) => t.id))
} catch (e) { } catch (e) {