[解決済み] 親のcomponentDidMountは子のcomponentDidMountの後に呼ばれるのですか?
2023-06-06 19:58:32
質問
親のレンダーに以下のようなコードがあります。
<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の前に呼び出されます。
このように動作するのでしょうか?それとも、私が何か間違ったことをしているのでしょうか。
もしこれが動作の仕組みなら、すべての子コンポーネントが親から読み込まれたことをどのように検出するのでしょうか?
どのように解決するのですか?
アップデイト
この回答はReact15用です。現在のバージョンは17以上なので、これは関係ない可能性があります。
オリジナル
はい
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>
関連
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み] Vue.js - ネストされたデータを適切に監視する方法
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] 親メソッドから子メソッドを呼び出す
-
[解決済み] 部分テンプレートとテンプレートの複雑なネスト
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?