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
相关产品推荐
相关产品推荐

