乐观更新(Optimistic UI)实现原理
乐观更新的核心思想和实现步骤是什么?SWR 和 TanStack Query 中分别如何实现乐观更新?如何处理更新失败的 UI 回滚?
回答
孤独的心
核心: 在服务端确认前立即更新 UI,假设成功,失败回滚。步骤: 1) 保存快照;2) 应用预期变更;3) 发起请求;4) 成功保持/失败回滚;5) 最终重新验证。SWR: mutate(key, newData, false) 先更新,请求后 mutate(key) 验证;失败用保存的 rollbackData 回滚。TanStack Query: useMutation onMutate 中 cancelQueries+setQueryData(乐观)+return previous; onError 中 setQueryData(回滚); onSettled 中 invalidateQueries。