回答編集履歴

1

各コールバックに関して、使う場面の想定も含め追記

2020/09/04 00:59

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -15,3 +15,107 @@
15
15
  ライフサイクルの理解と使用は、フレームワーク使用の上での、初級から中級への第一歩となりますので、
16
16
 
17
17
  よくよく勉強した上で、使っていかれるといいかと思います。
18
+
19
+
20
+
21
+
22
+
23
+ # beforeCreate
24
+
25
+ インスタンスが生成される前に実行されます。
26
+
27
+ (インスタンスを生成することを、ほとんどの場合、初期化、という)
28
+
29
+ ようは、Vueが、**これからいろいろ処理始めますよー**って時に実行されるものです。
30
+
31
+ この時点では、ほとんど変数の処理などがされていない状態なので、
32
+
33
+ できることは少ないでしょう。
34
+
35
+ ただし、一番先に実行されるので、**Ajaxなどの非同期処理**を先に走らせておくと、
36
+
37
+ 処理時間の節約になると思われます。
38
+
39
+
40
+
41
+ # created
42
+
43
+ Vueインスタンスが生成完了した時に呼ばれます。
44
+
45
+ Vueの変数などが一通り用意された状態なので、様々な処理が可能になった段階です。
46
+
47
+ まだ、HTML要素の生成は完了していないので、
48
+
49
+ HTMLにマウントさせる変数の用意や、変更処理を行うのに適したコールバックだと思われます。
50
+
51
+
52
+
53
+ # beforeMount
54
+
55
+ > これは、インスタンスが作成された後、elementへのマウントされる前で実行されます。
56
+
57
+
58
+
59
+ ようは、これから**HTML要素に変数の反映などを行なっていきますよー**という段階で呼ばれるということです。
60
+
61
+ マウントさせる変数の最終調整や、`created`での非同期処理が完了したかどうかの確認も行いやすいと思います。
62
+
63
+
64
+
65
+ # mounted
66
+
67
+ HTMLへのマウントが完了した段階でよばれます。
68
+
69
+ ようは、マウントさせたい変数などが、HTMLに反映された段階で呼ばれるコールバックです。
70
+
71
+ (この後レンダリングが順次行われる)
72
+
73
+ なので、**変数が反映された後に、改めて処理を行いたい**という時に、有用なコールバックでしょう。
74
+
75
+
76
+
77
+ # beforeUpdate
78
+
79
+ > データの更新があった時に、rerenderされる前に実行されます。
80
+
81
+ 更新前の既存のDOMに対してアクセスすることができます。
82
+
83
+
84
+
85
+ DOMにアクセス可能なので、DOMの状態によっては、やっぱ処理を変えたい、などの判別が可能になるかと。
86
+
87
+
88
+
89
+ # updated
90
+
91
+ > データの更新があった時に、rerenderされた後に実行されます
92
+
93
+ このフックでは、状態変化を行うような処理は推奨されていません。
94
+
95
+ なぜならばそれが原因で無限ループに入ってしまう可能性があるからです。
96
+
97
+
98
+
99
+ とある通りです。
100
+
101
+ 変数の変更がある度に実行されるので、
102
+
103
+ 何かと便利ではあるのですが、そこでさらに変数の変更を行なってしまうと、無限ループになるよ、という、
104
+
105
+ 少し注意が必要なコールバックのようですね。
106
+
107
+ 例えば、`created`の段階で、重い非同期処理をかけており、
108
+
109
+ その処理が終わり、変数の変更がかかった時も呼ばれるので、
110
+
111
+ そこで、改めて、マウント変数に値を反映させる、などの使い方が想定されます。
112
+
113
+ ただし、上記にある通り、無限ループになる可能性があるので、
114
+
115
+ 変数の変更をさらにする場合は特に、変数の値によって、処理をさせない、など工夫が必要かと。
116
+
117
+
118
+
119
+ あと何個かあるようですが、常時使いそうなものをまとめてみました。
120
+
121
+ 参考になれば幸いです。