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.

[リサーチ・メモ] ナビゲーションガード

Posted at

ナビゲーションガードとは

リダイレクトもしくはキャンセルによって遷移をガードするために主に使用される
→画面遷移の際にデータのチェックを実施する機能

ナビゲーションガードの種類と使い方

ガード変数to, from, nextについて

ガード変数 内容
to 遷移先のルートオブジェクト
from 遷移元のルートオブジェクト
next ナビゲーションを続行または中止する関数
※next(false) を呼び出すとナビゲーションが中止され、next('/') のようにパスを指定するとそのパスにリダイレクトする

beforeEach :画面遷移前に実行される

→会員作成画面から確認画面へ遷移する際にデータが格納されているか確認する時などに使用

router.beforeEach((to, from, next) => {
    if (to.name === 'ConfirmMemberRegistration' && !store.state.memberInfo) {
        alert('登録情報が失われました。もう一度登録をお願いします。');
    } else {
        next(); //画面遷移する
    }
});

beforeResolve:すべてのナビゲーションガードが解決された後に実行される

→データの整合性が取れたログを出力する時などに使用

router.beforeResolve((to, from, next) => {
  // ...
  next()
})

afterEach:画面遷移後に実行される

→会員登録完了後のメッセージ表示等に使用
※nextは使用できない

router.afterEach((to, from) => {
  if (to.path === '/success') {
    showMessage('Operation completed successfully!');
  }
});
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?