You need to enable JavaScript to run this app. React useState管理对象状态时DevTools显示状态更新但组件未重渲染
优惠活动
大模型
产品
解决方案
定价
更多

React useState管理对象状态时DevTools显示状态更新但组件未重渲染

React 状态更新后视图不重渲染异常

代码实现

首先定义了可生成指定范围内随机整数的工具函数:

function randomNum(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

随后定义存储随机数的初始对象,通过useState完成组件状态绑定:

var default_variables = {
  a: randomNum(2,9),
  b: randomNum(1,9),
  c: randomNum(2,9)
}
const [variables,setVariables] = useState(default_variables)

function refreshVariables(){
  setVariables({ ...variables,
                a: randomNum(2,9),
                b: randomNum(1,9),
                c: randomNum(2,9)
              })
}

对应的交互UI代码如下,通过按钮点击触发状态刷新,页面直接渲染当前存储的状态数值:

<Button 
  variant="contained" 
  color="primary"
  onClick= {refreshVariables}
>
  Refresh
</Button>
<div>{variables.a},{variables.b},{variables.c}</div>

异常表现

  • 点击Refresh按钮后,可在Chrome DevTools中观测到state值持续正常变更,但页面组件始终没有使用变更后的新值触发重渲染
  • 为排查该问题,尝试了函数式状态更新的写法,对应代码如下,但异常现象仍未解决:
setVariables(prevState => ({
  ...prevState,
  a: randomNum(2,9),
  b: randomNum(1,9),
  c: randomNum(2,9)
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 18:45:03