0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Nuxt.jsのライフサイクルフックについて

Posted at

概要

Nuxt.jsのライフサイクルフックについて
自分の中で曖昧な部分が多々ありましたのでアウトプットしたいと思います。

ライフサイクルフックとは

一言で言うとWEBページを表示する手順のこと。
全部で10個のフックが存在し、各フックで行われることが異なる。

WEBページが表示される手順

1. serverMiddleware

__サーバーのみで実行されるフック__であり、__サーバー固有の処理__を記載したりする。
APIサーバーをserverMiddlewareを使って作成することもできる。
処理を書いたファイルをnuxt.config.jsserverMiddlewareに登録するだけで使用できる。

2. nuxtServerInit

severMiddlewareと同様に__サーバーのみで実行されるフック__で
__クライアント側に処理を渡す前にサーバー側で行う処理__を記載する。
サーバーからクライアント側へ初期値を渡す処理や、クッキーの取得処理などを記載できる。

3. RouteMiddleware

__サーバーとクライアントの両方で実行されるフック__で
サーバーでは1回、クライアント側ではページ遷移のたびに呼び出される。
__ルーティング処理__などを記載する。
たとえば、認証していないユーザーはログインページにリダイレクトされるなど。
middlewareディレクトリ内にファイルを作成し、nuxt.config.jsmiddlewareに登録することで
処理を反映できる。

4. Validate

サーバーでSSR時に1回、クライアント側でページ遷移のたびに呼び出されるフック
各コンポーネントで__バリデーション処理__を設定できる。
コンポーネント内のでvalidateメソッドを定義することで使用できる。

5. asyncData

サーバーでSSR時に1回、クライアント側でページが読み込まれるたびに呼び出される
__APIからデータを取得し、ローカルデータに格納するような処理__を行う。
コンポーネント内でasyncDataメソッドを定義して使用する。

6. beforeCreate

__Vueインスタンスが初期化されるときに呼び出される__フック。
注意点としてインスタンスは初期化されるが、thisを使ったようなデータにはアクセスできない。

7. created

Vueインスタンスが初期化され、データも初期化されたときに呼び出される
ここで、beforeCreateでは使用できなかった、thisを使用したデータへのアクセスが可能になる。
なお、created以降からthisを使用してローカルのデータにアクセスできるようになる。

8. fetch

サーバー側でSSR時に1回、クライアント側でページ遷移ごと呼び出される
__APIからデータを取得する処理__などを記載する。

備考: fetchとasyncDataの違い
asyncData fetch
thisは使用できない thisを使用できる
pagesディレクトリ配下のファイルでのみ使用可 すべてのコンポーネントファイルで使用可

9. beforeMount

__Vueインスタンスが実際のDOMにマウントされる前にクライアントでのみ呼び出される__フック。
ちなみに__マウント__とは、既存のDOMをVueインスタンスが生成するDOMで置き換えること。

10. mounted

__VueインスタンスがDOMにマウントされた後にクライアントで呼び出される__フック。
__DOMを操作する処理__を記載する。
DOMが生成された後なので、classやidを取得することができる。

参考文献

Nuxt.js公式ドキュメント
Vue.js公式ドキュメント
Nuxt.jsのライフサイクルフックを丁寧に解説してみた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?