第3回 – Vue.jsのライフサイクル等の簡易逆引きリファレンス
2019.04.22

最近お腹周りのお肉が気になりまして、2,3年前までは摘むことができなかったお腹が摘めるように…。
一念発起し、筋トレを始めたむつたくです。
娘も手伝ってくれて、負荷を(主に乗ってきます…)掛けてくれます。良い意味で筋肉が悲鳴をあげてます。
さて、今回ですが、前回のブログでAPI呼び出しとかを〜とお伝えしてましたが、それよりも大事なライフサイクルやcomputed、methodsとかのことを説明した方がいいなと思いまして、急遽変更致します。
ここを理解しないと、なんでこうなる???というのが多発すると思います。
それともう一つ!
chromeを使用している方はVue.js devtoolsを追加しておくとリアクティブの状態とか可視化できますので、少し幸せになれます。
項目
- Vue.jsのライフサイクル
– Vueインスタンス生成
– DOMへのマウント
– データ変更/画面の更新
– Vueインスタンス破棄
– エラー捕捉
- createdとmountedのユースケース
- 算出プロパティと監視プロパティ(computed/watch)
– 算出プロパティ(computed)
– 監視プロパティ(watch)
- メソッド(methods)
今回は、上記4つのことについて触れていきますね。
Vue.jsのライフサイクル
ライフサイクルというのは、インスタンスが生成(初期化)されてから破棄されるまでのことになります。
Vue.jsでは以下のサイクルになってます。
Vue.jsのライフサイクルは上の画像でもわかるように4段階と記載はされていませんが、error出力に関する1つに分かれてます。
(1) Vueインスタンスの生成(初期化)
発生フック: beforeCreate created
1段階目です。
[cc_html]
{省略}
[/cc_html]
moutedのユースケース
プラグインの初期化を行う
便利なJavaScriptライブラリがたくさんありますが、基本的にターゲットとなるDOMが描画されてないといけません。createdではまだ描画されてませんよね?アクセスできないので、mountedに初期化処理を書きます。
また、Ajax通信をここで行ってもいいのですが、DOMにアクセスする必要があるものに対してだけに限定した方が良いです。描画されてないからエラーに・・・なんてことも有り得ます。
算出プロパティと監視プロパティ(computed/watch)
(1) 算出プロパティ(computed)
算出プロパティとは、プロパティなのに関数も使えるという不思議な機能です。
関数の演算結果をプロパティの値として用いるという特徴を持ちます。
また、値をキャッシュしますので、値に変更が無いとキャッシュされたものがそのまま使用されるので、描画の処理時間が短縮できます。
ただし、引数を使用しますと、依存関係がなくなってしまうので、毎回再描画するハメになります。
算出プロパティのメリットは、加工したデータを渡す事(getter)、任意の加工をしてデータを保存する事(setter)、
そしてtemplate内の可読性が高まることです。
(2) 監視プロパティ
データや算出プロパティの状態を監視して、変化があったとき登録した処理を自動実行します。
つまり、データの変化をトリガにしたフックです。
データ変化であれば、算出プロパティのsetter/getterで十分かと思いますが、非同期やコストの高い(重い)処理を実行したいときに最も便利だと思います。
メソッド(methods)
振る舞いは基本的に算出プロパティと同様です。
違いは、算出プロパティはデータ変更がトリガなのに対し、methodsは、DOMイベントを呼び出す際に
v-on ディレクティブを使用します。また、値をキャッシュしないので、同じ結果になることになっても、毎回処理が実行されることになります。
また、v-onは省略できます。
[cc_html]
[/cc_html]
算出プロパティ(computed)とメソッド(methods)の違いは以下の感じでしょう。
テンプレート
[cc_html]
[/cc_html]
スクリプト
[cc_javascript]
[/cc_javascript]
テキストを入力すると、ログにcomputedとmethodsの両方が出力されます。
では、ボタンをクリックするとどうでしょう?
すると、computedは実行されず、methodsだけが実行されているのがわかります。
しかし、incrementCountを実行したのに、textの内容もログに表示されています。
このようにmethodsは依存関係にないプロパティが変更された場合でも実行されてしまうことが分かりました。
以上となります。
簡単に説明していきましたが、詳細は公式ドキュメントを参照してください。
では、またの機会に!
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io
