プログラムによるナビゲーションとuseRouter
router.push()、router.replace()、router.go()、useRouter()とuseRoute()のComposable
「プログラムによるナビゲーションとuseRouter」はCoddyKit上の無料Vue Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはVue Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Vue Academyコースには全4レッスンが含まれています。
コードからナビゲーションする
RouterLink 以外にも、フォーム送信やログインの後など、JavaScript からナビゲーションすることがよくあります。useRouter コンポーザブルを使うと、ナビゲーションに使用するルーターインスタンスを取得できます。
ルーターを取得する
<script setup> 内で useRouter() を呼び出します。返されるオブジェクトには、push、replace、go などが公開されています。
import { useRouter } from 'vue-router'
const router = useRouter()push でナビゲーションする
router.push はリンクをクリックした場合と同じように、履歴スタックにエントリを追加します。最も簡単な形式では、パス文字列を渡します。
router.push('/dashboard')ルートオブジェクトを使って push する
name、params、query を含むオブジェクトを渡すこともできます。名前付きルートを使うと、パスをハードコードせずに済みます。
router.push({
name: 'user',
params: { id: 42 },
query: { tab: 'profile' }
})replace:履歴エントリを追加しない
router.replace は履歴に追加せずにナビゲーションするため、戻るボタンでそのページがスキップされます。ログイン後に使用すると、ユーザーがログインページへ戻れないようにできます。
router.replace('/dashboard')戻る・進む操作を行う
router.go(n) は、n ステップ分、履歴を移動します。router.go(-1) は 1 ページ戻り、router.go(1) は 1 ページ進みます。
function goBack() {
router.go(-1)
}非同期アクションの後に実行する
典型的な流れは、フォームを送信し、結果を await してからナビゲーションすることです。push は完了を待機できる Promise を返します。
async function login() {
await auth.signIn(form)
router.push('/dashboard')
}現在のルートを読み取る
現在のルートの params と query を読み取るには、useRoute コンポーザブルを使用します。useRouter と混同しないでください。useRoute はルート、useRouter はナビゲーターです。
import { useRoute } from 'vue-router'
const route = useRoute()パラメーターにアクセスする
route.params を通じて動的セグメントを読み取ります。/user/:id というルートの場合、id は route.params.id にあります。
const userId = route.params.idクエリ文字列にアクセスする
route.query を通じてクエリ文字列を読み取ります。?tab=profile の場合は、route.query.tab を使用します。
const tab = route.query.tabパラメーターの変更に反応する
route はリアクティブなので、同じコンポーネントにとどまったまま params が変化したときに反応するには、watch します。
import { watch } from 'vue'
watch(() => route.params.id, (newId) => {
loadUser(newId)
})理解度チェック
プログラムによるナビゲーションについての知識を確認します。
まとめ
プログラムによるナビゲーションを学びました。
- useRouter() から push、replace、go を取得できます。
- push は履歴に追加し、replace は追加しません。go(-1) で戻ります。
- push にはパス文字列、または { name, params, query } オブジェクトを渡せます。
- useRoute() で現在の params と query を読み取れます。これらはリアクティブです。
よくある質問
「プログラムによるナビゲーションとuseRouter」レッスンは無料ですか?
はい。「プログラムによるナビゲーションとuseRouter」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Vue Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Vue Academyコースには全4レッスンが含まれています。
「プログラムによるナビゲーションとuseRouter」で何を学びますか?
router.push()、router.replace()、router.go()、useRouter()とuseRoute()のComposable ブラウザで直接実行するハンズオンコードでVue Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Vue Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのVue Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「プログラムによるナビゲーションとuseRouter」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このVue Academyレッスンでコードを書いて実行できますか?
はい。すべてのVue Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ルートメタフィールドと型付け
- ルート遷移とアニメーション
- スクロール動作の設定
- プログラムによるナビゲーションとuseRouter