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

React中如何避免状态更新时无关兄弟组件不必要重渲染?

React组件重渲染优化问题

我正在开发一套React组件结构,父组件<MyComponent>接收三个状态值,另有三个独立的控制器组件,每个组件初始化时传入其中一个状态值及其setter函数。

以下是简化后的代码:

// Parent Component
<MyComponent
  input_a={A}
  input_b={B}
  input_c={C}
/>

// State declarations
const [A, setA] = useState(1);
const [B, setB] = useState(1);
const [C, setC] = useState(1);

// Controller Components
<ElementA
  initial={A}
  setter={setA}
/>
<ElementB
  initial={B}
  setter={setB}
/>
<ElementC
  initial={C}
  setter={setC}
/>

在此结构中,当我更新一个状态值(例如调用setA)时,三个控制器组件(ElementA、ElementB、ElementC)都会重渲染——尽管只有与更新状态关联的组件应受影响。状态值作为控制器组件的初始值,后续更新理论上仅应影响<MyComponent>。

我曾考虑使用memoization(如React.memo),但未达到预期效果。我正在寻找无需依赖memoization的替代方案或最佳实践,以重构或优化代码,使仅对应更新状态的组件重渲染。


更新:
感谢各位的解答与建议。我最终决定使用MobX管理状态,这让我的开发工作轻松了许多。
我也意识到之前错误地使用了memoization,但即使修正后,仍发现动画存在卡顿现象。

内容的提问来源于stack exchange,提问作者Антон Пименов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:16:00