关于react生命周期

新手上路,请多包涵

一个父组件中包含着四个子组件dcdc29f0ee80362c9b48fe45fde7d33.png

为什么子组件的componentDidMount在所有子组件的render方法完成后执行?如下图
9081e8d9f4cfdb0db5372742fa40563.png

我所理解的执行顺序:
d055fe5a395b2a9c5a8b6af8cbcd03c.png
9048cb2ad7775e60dee75518033d467.png

阅读 2.1k
2 个回答

你可以想下,virtualDOM diff后的替换render,究竟是四个打包在一起做,还是说我一个个替换render好,这两者的渲染成本不是一个级别的。而且如果组件1 didmount了,这时候组件二的render计算影响了组件1的排版,是不还会触发一遍组件1 DOM的重绘。

最简单的例子就是,在100次for循环中,做innerHTML的赋值,还是选择把一百次的html叠加起来,最后一次性对innerHTML赋值

就是不停的回调啊,调完了才出栈, 把下面JSX转成JS可能看得清除点.

class MyOne extends Component {
  render() {
    return <h1>MyOne</h1>;
  }
}
class MyTwo extends Component {
  render() {
    return <h1>MyTwo</h1>;
  }
}

class Me extends Component {
  render() {
    return (
      <>
        <MyOne></MyOne>
        <MyTwo></MyTwo>
      </>
    );
  }
}
class MyOne extends Component {
  render() {
    return React.createElement("h1", null, "MyOne");
  }
}

class MyTwo extends Component {
  render() {
    return React.createElement("h1", null, "MyTwo");
  }
}

class Me extends Component {
  render() {
    return React.createElement(React.Fragment, null, React.createElement(MyOne, null), React.createElement(MyTwo, null));
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题