react 19 useOptimistic 竞争更新乐观值时阻塞

react 19 刚刚出,我在官网上调试这个 useOptimistic api 时,发现了一个竞争调用时的阻塞状态。当连续多次调用 updateFn 参数,且每次更新时间较长时,乐观状态的更新被阻塞了。

前往官网 useOptimistic 一节,修改末尾 demo 中 actions.js 代码如下:

js 复制代码
let i = 0;
const time = [10_000,6_000,10_000];
export async function deliverMessage(message) {
  await new Promise((res) => setTimeout(res, time[i++] ?? 1000));
  return message;
}

此时前三次的更新时间变为 10s、6s、10s,当我连续依次输入 1、2、3 后,触发三次乐观更新,视图在某个时间点出现如下的结果:

实际上,第二次和第一次更新已经完成,第三次更新还在进行中。可是乐观更新的结果没办法进行 diff 区分,乐观值被更慢的更新严重阻塞。

新 api 还是慎用

相关推荐
天堂的恶魔94628 分钟前
C++设计模式 —— 工厂模式
javascript·c++·设计模式
轻口味29 分钟前
Vue.js 如何自定义主题和样式
前端·javascript·vue.js
独莫子凡1 小时前
Vue如何处理浏览器跨域问题
前端·vue.js
黑白两客6 小时前
自定义vue摄像头 自定义时长,自定义大小
前端·javascript·vue.js
cdcdhj8 小时前
bind绑定类,使this在上下文章中指向类,然后利用debug绑定类中的方法输出缓存中的日志
前端·缓存·node.js
haomo20148 小时前
AI赋能前端开发:构建你的高效学习与职业发展之路
前端·人工智能·学习
阿芯爱编程8 小时前
react高级面试题
前端·javascript·react.js
zhanggongzichu8 小时前
Vue3中watch和watchEffect的使用场景和区别
前端·javascript·vue.js·watch·watcheffect
严老湿8 小时前
五分钟让你本地部署一个 DeepSeek (快速指北)
前端·人工智能·deepseek
薛一半9 小时前
vue封装组件进阶
前端·javascript·vue.js