乐观更新

乐观更新:用户操作后先更新 UI 再异步提交,让用户感觉响应更快。

#type / concept #status / evergreen #tech / dev / frontend

[!info] related notes

乐观更新

一句话定义

乐观更新是用户操作后先更新本地 UI,再异步提交服务器,实现”让用户感觉响应更快”的优化技术。

核心内容

适用场景

  • 点赞/收藏
  • 勾选/开关
  • 排序/拖拽
  • 表单提交
  • 评论发布

实现思路

  1. 用户操作 → 立即更新本地 UI(乐观)
  2. 同时发送异步请求
  3. 成功:确认更新
  4. 失败:回滚到之前的状态

示例

function handleLike() {
  // 1. 立即更新 UI
  setLiked(!liked);
  
  // 2. 发送请求
  api.toggleLike(id).catch(() => {
    // 3. 失败回滚
    setLiked(!liked);
    toast.error('操作失败');
  });
}

核心原则

  • 只对可逆操作做乐观更新
  • 失败必须回滚
  • 考虑并发冲突

边界与易混淆点

乐观更新 vs 骨架屏

  • 骨架屏:解决加载时的感知
  • 乐观更新:解决交互时的感知
  • 两者都是”感知优化”,不改变实际速度
创建于 2026/4/6 更新于 2026/5/27