当前位置: 首页 > 面试题库 >

父级的componentDidMount是否在子级的所有componentDidMount之后调用?

廖臻
2023-03-14
问题内容

我父母的渲染中有以下代码

<div>           
{
    this.state.OSMData.map(function(item, index) {
        return <Chart key={index} feature={item} ref="charts" />
    })
}
</div>

以及下面我孩子图表中的代码

<div className="all-charts">
    <ChartistGraph data={chartData} type="Line" options={options} />
</div>

我以为仅在所有子项都加载后才调用父级的componentDidMount。但是在这里,父级的componentDidMount在子级的componentDidMount之前被调用。

这是工作方式吗?还是我做错了什么。

如果这是工作方式,我如何检测从父级加载所有子级组件的时间?


问题答案:

是的componentDidMount,孩子的称为父母之前的。

运行下面的代码

文档状态:

初始渲染发生后立即仅在客户端(而不是服务器)上调用一次。在生命周期的这一点上,您可以访问子代的任何引用(例如,访问基础的DOM表示形式)。
子组件*componentDidMount()方法在父组件的方法之前被调用。 *

这是因为在渲染时,您应该能够引用任何内部/子节点,并且不尝试访问父节点。

运行下面的代码 。它显示控制台输出。

var ChildThing = React.createClass({

  componentDidMount: function(){console.log('child mount')},

  render: function() {

    return <div>Hello {this.props.name}</div>;

  }

});



var Parent = React.createClass({

  componentDidMount: function(){console.log('parent')},

  render: function() {

    return <div>Sup, child{this.props.children}</div>;

  }

});



var App = React.createClass({

  componentDidMount: function(){console.log('app')},

  render: function() {

    return (

      <div>

        <Parent>

          <ChildThing name="World" />

        </Parent>

      </div>

    );

  }

});



ReactDOM.render(

  <App />,

  document.getElementById('container')

);


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>



<div id="container">

    <!-- This element's contents will be replaced with your component. -->

</div>


 类似资料:
  • 我是ReactJS的新手,我现在对组件生命周期方法的工作方式感到困惑;在我的例子中,这与ReactJS. org文档完全矛盾。预期的行为是在渲染()之前执行,但是渲染()在组件迪蒙()之前执行。 我的源代码: 类变量this.cache是如果被调用在,但它占用的值如果在中调用。

  • 问题内容: 在我的应用中,我必须经常在两种布局之间切换。错误在下面发布的布局中发生。 第一次调用布局时,没有发生任何错误,一切都很好。然后,当我调用不同的布局(空白),然后再次调用我的布局时,出现以下错误: 我的布局代码如下所示: 我知道之前曾有人问过这个问题,但对我来说没有帮助。 问题答案: 错误消息说明你应该做什么。

  • 问题内容: 问题 我正在使用内联函数定义设置反应 然后在DOM引用中未设置 我的理解是,回调应该在安装期间运行,但是在ref回调函数 之前* 调用添加语句揭示。 * 例如,我看过的其他代码示例在github上的讨论都表明相同的假设,应该在中定义的任何回调 之后调用,甚至在对话中也要说明 那么在所有的ref回调都执行完之后,componentDidMount是否被触发? 是。 我正在使用反应 15.

  • 我以这种方式在实体结构中使用Joined Hibernate继承映射: 我想先保存一个用户,然后在另一个api中保存一个客户,并将该客户映射到第一个用户。所以我尝试用现有的用户id保存一个新客户: 但是,hibernate使用新生成的id(而不是固定传递的id)生成客户,并生成一个新用户。我的问题是:我怎样才能在孩子的父母之后救他?还是反正又有没有救孩子不救父母?

  • 问题内容: 我用于在屏幕之间导航。我在第二个活动中调用两个API的in 函数。第一次加载时,加载成功。然后,我按返回按钮返回到第一个活动。然后,如果我再次进行第二次活动,则不会调用API,并且会出现渲染错误。我无法为此找到任何解决方案。任何建议,将不胜感激。 问题答案: 如果有人在2019年到这里来,请尝试以下操作: 将组件添加到渲染中: 现在,每次页面聚焦时都会触发onDidFocus事件,尽管

  • 问题内容: 我有一个包含三个部分的搜索页面。浏览主题组件列出了可供选择的主题。浏览文章组件基于主题ID列出所有文章,如果没有主题ID,则加载所有文章。home组件包含browsertopics和browserarticles组件,并根据所单击的主题更改其状态。 我需要的是,我希望BrowseTopics组件在父状态更改时停止重新呈现。我尝试使用shouldComponentUpdate()(返回f