useOptimistic 的临时状态怎样与真实结果收敛?
参考答案
useOptimistic 用于在 Action 进行期间展示临时结果,例如提交消息后先显示“发送中”。Action 结束后的展示由传给 Hook 的真实值决定,所以成功时仍需要更新真实数据,失败时也要有清楚的错误反馈。
如果提供 reducer 来合成乐观状态,它必须是纯函数;更新应发生在 Action 内。不要在 reducer 中发送请求或修改外部对象。官方当前文档还提供不传 reducer 的用法,采用哪种形式应与项目 React 版本配套。
乐观显示不意味着服务端已经保存,也不能自动解决重复提交、乱序响应或离线同步。业务仍需稳定标识、幂等策略及冲突处理。适合短暂失败可恢复的交互,付款或权限变更等场景需要更谨慎地表达“待确认”状态。