web-dev-qa-db-ja.com

ionViewDidLoad()関数の目的は何ですか?

_ionic g page pageName_を実行すると、生成された.ts、.css、および.htmlファイルが取得されます。

.tsファイル内にはionViewDidLoad(){}という関数があり、これはビューが表示される前に印刷されます。

これは、コンストラクタ自体で実行できると思いますか?

この機能に関するブログや説明の参照を誰かに教えてもらえますか?

21
Mohan Gopi

コンストラクターまたはionViewDidLoadの両方で多くのことを行うことができ、結果は同じになります...

しかし、constructorionViewDidLoadの主な違い constructorは(コンポーネントがインスタンス化されるときに)1回だけ実行されますが、ionViewDidLoadメソッドは実行されます毎回ビューが入力(ロード)されます。

たとえば、リモートデータソースからデータをロードする場合、コンストラクターでデータをロードする場合、データは1回だけ取得されます。そのデータが十分に速く変化する可能性がある場合は、ionViewDidLoadメソッドで取得し、ページがロードされるたびに最新のデータが取得されてビューに表示されるようにすることをお勧めします。

ionViewDidLoadに関するもう1つの重要な事実 DOMとやり取りしたい場合がある(マップを初期化するために).

その場合、コンストラクターでDOMにアクセスしようとすると、その時点ではDOMの準備ができておらず、マップ要素を取得できないことがわかります。そのための正しいアプローチはionViewDidLoadの中にあります。なぜなら、その時点で(名前が示すように)ビューはすでにロードされており、DOMが利用可能になっているからです。

更新:

以下のコメントで@graphefruitが指摘したように、最新バージョンのIonic 2、ionViewDidLoadは、ページがキャッシュされていない場合に起動します。ionViewWillEnterまたはionViewDidEnterはページが入力されるたびに発生します

30
sebaferreras

constructorは、ページのインスタンス化ごとに一度、すべての前に呼び出されます。ここでは、HTML DOMを参照しない初期化を行うことができます

ionViewDidLoadは、ページのDOMが読み込まれると、ページが表示される前に、ページのインスタンス化ごとに1回呼び出されます。ここで、HTML DOMの準備が必要な初期化を行うことができます

ionViewWillEnterは、ページが表示される直前に呼び出されます。ページがバックグラウンドに戻って戻る場合は複数回、ここで別のページで変更できる場合はデータを更新できます

ionViewDidEnterは同じですが、ページが表示された直後に呼び出されます。たとえば、ページがバックグラウンドに戻って戻る場合は複数回呼び出されます。たとえば、ページが前面になったときにアラートを表示できます

9
Luca C.