透過 100 多個技巧的集合來學習 Nuxt!

useRoute

useRoute 組合式函式會回傳目前的路由。
在 Vue 元件的範本中,您可以使用 $route 存取路由。

範例

在以下範例中,我們透過 useFetch 呼叫 API,並使用動態頁面參數 - slug - 作為 URL 的一部分。

~/pages/[slug].vue
<script setup lang="ts">
const route = useRoute()
const { data: mountain } = await useFetch(`/api/mountains/${route.params.slug}`)
</script>

<template>
  <div>
    <h1>{{ mountain.title }}</h1>
    <p>{{ mountain.description }}</p>
  </div>
</template>

如果您需要存取路由查詢參數 (例如路徑 /test?example=true 中的 example),則可以使用 useRoute().query 而不是 useRoute().params

API

除了動態參數和查詢參數之外,useRoute() 也提供以下與目前路由相關的計算參考

  • fullPath:與目前路由相關聯的編碼 URL,包含路徑、查詢和雜湊
  • hash:URL 中以 # 開頭的解碼雜湊部分
  • query:存取路由查詢參數
  • matched:正規化的已匹配路由陣列,包含目前路由位置
  • meta:附加到紀錄的自訂資料
  • name:路由紀錄的唯一名稱
  • path:URL 的編碼路徑名稱部分
  • redirectedFrom:在到達目前路由位置之前嘗試存取的路由位置
瀏覽器在發出請求時不會發送 URL 片段 (例如 #foo)。因此,在範本中使用 route.fullPath 可能會觸發 hydration 問題,因為這會在客戶端包含片段,但伺服器端則不會。
https://router.vuejs.org/api/#RouteLocationNormalizedLoaded 閱讀更多資訊。