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

React组件未修改状态却渲染两次的原因是什么?

React类组件生命周期钩子重复调用问题

我最近在研究React类组件的生命周期,为了清晰观察每个钩子的执行顺序,我给自定义的CircleA组件的每一个生命周期方法都添加了控制台日志,代码如下:

class CircleA extends Component { 
  constructor(props) { 
    super(props); 
    this.state = { name: "Circle", }; 
    console.log("Circle-A constructor"); 
  } 
  static getDerivedStateFromProps(props, state) { 
    console.log("Circle-A getDeriveStateFromProps Method"); 
    return null; 
  } 
  componentDidMount() { 
    console.log("Circle-A componentDidMount Method"); 
  } 
  render() { 
    console.log("Circle-A render method"); 
    return <div>Circle-A</div>; 
  } 
}

运行代码后我发现了异常:componentDidMount之前的所有生命周期方法都被调用了两次,而且我全程没有修改过组件的状态,也没有触发任何会导致重新渲染的操作。控制台的输出信息如下:

Circle-A constructor
Circle-A getDeriveStateFromProps Method
Circle-A render method
Circle-A constructor
Circle-A getDeriveStateFromProps Method
Circle-A render method
Circle-A componentDidMount Method

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:27:58