React 状态更新后组件不重新渲染?从 Object.is 和闭包陷阱排查一次真实问题
上周帮同事排查一个 React 页面的 bug:点击按钮修改了 state 里的对象属性,接口数据回来了,控制台也打印了新的值,但页面上的数字和列表纹丝不动。代码里明明调用了 setState,也没有报错。这类问题通常不是 React 本身失效,而是新旧 state 在浅比较时被判定为相等,或者更新函数里引用了过期的闭包变量。React 的调度机制只会在 Object.is 比较结果为 false 时才安排 re-render,而很多开发者习惯直接修改原对象再 setState,导致引用没变。另一个常见场景是 useEffect 或事件回调里捕获了旧 state,在异步逻辑中读取到的永远是初始...