nuxt logo

ドキュメント翻訳(非公式)

navigateTo

navigateToは、プログラム的にユーザーをナビゲートするためのヘルパー関数です。

使用法

navigateToはサーバーサイドとクライアントサイドの両方で利用可能です。Nuxtコンテキスト内、または直接使用してページナビゲーションを実行できます。

navigateToを呼び出す際は、必ずその結果に対してawaitまたはreturnを使用してください。

navigateToはNitroルート内では使用できません。Nitroルート内でサーバーサイドリダイレクトを行うには、代わりにsendRedirectを使用してください。

Vueコンポーネント内で

// 'to'を文字列として渡す
await navigateTo('/search')

// ... またはルートオブジェクトとして
await navigateTo({ path: '/search' })

// ... またはクエリパラメータを含むルートオブジェクトとして
await navigateTo({
  path: '/search',
  query: {
    page: 1,
    sort: 'asc'
  }
})

ルートミドルウェア内で

export default defineNuxtRouteMiddleware((to, from) => {
  if (to.path !== '/search') {
    // リダイレクトコードを'301 Moved Permanently'に設定
    return navigateTo('/search', { redirectCode: 301 })
  }
})

ルートミドルウェア内でnavigateToを使用する場合、ミドルウェアの実行フローが正しく動作するように、その結果を返す必要があります。

例えば、次の実装は期待通りに動作しません

export default defineNuxtRouteMiddleware((to, from) => {
  if (to.path !== '/search') {
    // ❌ これは期待通りに動作しません
    navigateTo('/search', { redirectCode: 301 })
    return
  }
})

この場合、navigateToは実行されますが返されないため、予期しない動作を引き起こす可能性があります。

こちらも参照 guide > directory-structure > middleware

外部URLへのナビゲーション

navigateToexternalパラメータは、URLへのナビゲーションの方法に影響を与えます:

  • external: trueがない場合

    • 内部URLは期待通りにナビゲートします。
    • 外部URLはエラーをスローします。
  • external: trueがある場合

    • 内部URLはフルページリロードでナビゲートします。
    • 外部URLは期待通りにナビゲートします。

// エラーをスローします;
// デフォルトでは外部URLへのナビゲーションは許可されていません
await navigateTo('https://nuxt.com')

// 'external'パラメータを'true'に設定すると正常にリダイレクトします
await navigateTo('https://nuxt.com', {
  external: true
})

新しいタブでページを開く

// 'https://nuxt.com'を新しいタブで開きます
await navigateTo('https://nuxt.com', {
  open: {
    target: '_blank',
    windowFeatures: {
      width: 500,
      height: 500
    }
  }
})

function navigateTo(
  to: RouteLocationRaw | undefined | null,
  options?: NavigateToOptions
) => Promise<void | NavigationFailure | false> | false | void | RouteLocationRaw 

interface NavigateToOptions {
  replace?: boolean
  redirectCode?: number
  external?: boolean
  open?: OpenOptions
}

type OpenOptions = {
  target: string
  windowFeatures?: OpenWindowFeatures
}

type OpenWindowFeatures = {
  popup?: boolean
  noopener?: boolean
  noreferrer?: boolean
} & XOR<{ width?: number }, { innerWidth?: number }>
  & XOR<{ height?: number }, { innerHeight?: number }>
  & XOR<{ left?: number }, { screenX?: number }>
  & XOR<{ top?: number }, { screenY?: number }>

パラメータ

to

: RouteLocationRaw | undefined | null

デフォルト: '/'

toはリダイレクト先のプレーンな文字列またはルートオブジェクトです。undefinedまたはnullとして渡された場合、デフォルトで'/'になります。

// URLを直接渡すと'/blog'ページにリダイレクトします
await navigateTo('/blog')

// ルートオブジェクトを使用すると、名前が'blog'のルートにリダイレクトします
await navigateTo({ name: 'blog' })

// ルートオブジェクトを使用してパラメータ(id = 1)を渡しながら'product'ルートにリダイレクトします。
await navigateTo({ name: 'product', params: { id: 1 } })

options (オプション)

: NavigateToOptions

以下のプロパティを受け入れるオブジェクト:

  • replace

    • : boolean

    • デフォルト: false

    • デフォルトでは、navigateToはクライアントサイドのVue Routerインスタンスに与えられたルートをプッシュします。

      この動作は、replacetrueに設定することで変更でき、与えられたルートが置き換えられることを示します。

  • redirectCode

    • : number

    • デフォルト: 302

    • navigateToは与えられたパスにリダイレクトし、サーバーサイドでリダイレクトが行われる場合、デフォルトでリダイレクトコードを302 Foundに設定します。

      このデフォルトの動作は、異なるredirectCodeを提供することで変更できます。一般的に、301 Moved Permanentlyが恒久的なリダイレクトに使用されます。

  • external

    • : boolean

    • デフォルト: false

    • trueに設定すると、外部URLへのナビゲーションを許可します。それ以外の場合、navigateToはエラーをスローします。デフォルトでは外部ナビゲーションは許可されていません。

  • open

    • : OpenOptions

    • URLをウィンドウのopen()メソッドを使用してナビゲートすることを許可します。このオプションはクライアントサイドでのみ適用され、サーバーサイドでは無視されます。

      以下のプロパティを受け入れるオブジェクト:

    • target

      • : string

      • デフォルト: '_blank'

      • リソースが読み込まれるブラウジングコンテキストの名前を指定する、空白のない文字列。

    • windowFeatures

      • : OpenWindowFeatures

      • 以下のプロパティを受け入れるオブジェクト:

        プロパティ説明
        popupbooleanブラウザが決定するUI機能を持つ最小限のポップアップウィンドウを要求します。
        width または innerWidthnumberスクロールバーを含むコンテンツ領域の幅(最小100ピクセル)を指定します。
        height または innerHeightnumberスクロールバーを含むコンテンツ領域の高さ(最小100ピクセル)を指定します。
        left または screenXnumber画面の左端に対する新しいウィンドウの水平位置を設定します。
        top または screenYnumber画面の上端に対する新しいウィンドウの垂直位置を設定します。
        noopenerboolean新しいウィンドウがwindow.openerを介して元のウィンドウにアクセスするのを防ぎます。
        noreferrerbooleanRefererヘッダーの送信を防ぎ、暗黙的にnoopenerを有効にします。

        windowFeaturesプロパティの詳細については、ドキュメントを参照してください。