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

React状态对象赋值时丢失其他键值对问题求助

问题原因与解决方案

问题原因

这是React状态更新的闭包陷阱导致的。你的两个异步函数执行时,捕获的都是组件初始渲染时的pageData状态(即marketData: [], totalCash: 0):

  • 第一个异步调用setPageData({...pageData, totalCash: ...})时,只会更新totalCash,marketData仍为初始空数组;
  • 第二个异步调用时,同样基于初始的pageData更新,修改marketData的同时,totalCash会被重置为初始值0。
    因此每次更新都会覆盖掉另一个字段的最新值。

解决方案

使用函数式更新,给setPageData传入一个函数,该函数接收当前最新的状态作为参数,返回新的状态对象,确保每次更新都基于最新状态修改:

修改后的赋值操作代码:

// 更新totalCash
setPageData(prevData => ({...prevData, totalCash: 821916.994425}));
// 更新marketData
setPageData(prevData => ({...prevData, marketData: [{test: 1}, {test: 2}, {test: 3}]}));

这里的prevData始终是组件当前最新的状态值,解构后修改指定字段,就能保留另一个字段的最新值,不会出现被重置为空/初始值的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:55:58