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

React如何在子组件条件渲染时确定应保留的状态?

React条件渲染下useState状态不混乱的原因

你可能误解了React维护状态的方式——状态不是按全局的useState调用顺序统一管理的,而是和组件实例绑定的。

拿你给的代码举例:

  • App组件的visible状态属于App自己的组件实例,和子组件完全独立。
  • 每个<Counter/>都是一个独立的组件实例,每个实例内部都有自己的count状态,互相不干扰。

当visible为true时,CounterGroup渲染两个Counter实例:第一个实例有它自己的count,第二个实例也有自己的count。
当你点击Toggle把visible改成false时,第一个Counter实例会被卸载,React会直接清理这个实例的所有状态;而第二个Counter实例从始至终都存在于DOM树中,它的状态自然会被完整保留下来,根本不存在“React要判断保留哪个count”的问题——因为两个count本来就属于不同的实例,互不关联。

再直白点说:React的状态是“跟着组件实例走”的,每个组件实例维护自己内部useState的调用顺序和状态值。只要组件实例没被卸载,它的状态就会一直保留;一旦组件被卸载,状态就会被回收。你示例里的第二个Counter从未被卸载过,所以它的count状态肯定不会丢,也不会和被卸载的第一个Counter的状态搞混。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:44:58