You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中使用useState再次更新同状态时如何保留对象数组的已更新值

问题根因

你遇到的更新丢失问题是由状态更新闭包捕获导致的:当前代码在更新状态时直接引用了当前渲染闭包内的translatedResponse旧值。如果短时间内多次调用更新函数,React的状态批处理机制会让所有更新都基于同一个初始旧状态计算,最终只有最后一次更新的结果会被保留,之前的更新都会被覆盖。

解决方案

使用useState提供的函数式更新语法即可解决,更新时不直接引用当前状态值,而是通过回调函数的参数拿到上一次更新后的最新状态,基于该值计算新状态。

修改后代码
const updateTranslatedResponse = (segmentId, key, value) => {
    setTranslatedResponse(
        // 回调参数prev为React内部维护的最新状态值
        prev => prev.map(
            el => el.segment_id == segmentId ? { ...el, [key]: value } : el
        )
    )
}
效果说明

修改后连续多次调用updateTranslatedResponse修改不同属性时,每次更新都会基于上一次修改后的最新状态计算,所有修改都会被正常保留,不会出现旧值回退的问题。

内容的提问来源于stack exchange,提问作者bairavand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:27:01