useOptimistic 用于实现乐观更新,在异步操作完成前立即显示预期结果。

useOptimistic Hook 详解

useOptimistic 用于实现乐观更新,在异步操作完成前立即显示预期结果。

// 基本语法

const [optimisticState, addOptimistic] = useOptimistic(
  state,  // 真实状态
  (currentState, optimisticValue) => {
    // 返回乐观状态
    return newState;
  }
);

// 使用
addOptimistic(value);  // 立即显示乐观值
await serverAction();  // 执行实际操作

示例 1: 点赞按钮

真实值: 42

乐观值: 42

状态: ✅ 已同步

说明: 点击后立即 +1 显示,1.5 秒后服务器确认更新。

示例 2: 待办事项

  • 学习 useOptimistic
  • 完成项目文档

实际任务数: 2

显示任务数: 2

示例 3: 即时消息

你好!

你好,有什么可以帮你?

示例 4: 失败回滚

10

真实值: 10

测试方法:
  1. 不勾选“模拟请求失败”,点击按钮看正常流程
  2. 勾选“模拟请求失败”,点击按钮看回滚效果

使用指南

✅ 适合乐观更新

  • 点赞/收藏
  • 评论/留言
  • 待办事项
  • 即时消息

❌ 不适合乐观更新

  • 支付操作
  • 删除重要数据
  • 需要严格验证
  • 不可逆操作