最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3中的路由傳參兩種方式舉例詳解

 更新時間:2025年05月21日 09:19:44   作者:小二愛編程·  
這篇文章主要給大家介紹了關于Vue3中的路由傳參兩種方式的相關資料,Vue Router支持query和params傳參,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

在Vue應用中,路由傳參是非常常見的需求,它允許我們在不同的組件之間傳遞數(shù)據(jù)。Vue Router提供了兩種主要的方式來傳遞參數(shù):query參數(shù)和params參數(shù)。下面我們將詳細探討這兩種傳參方式的使用方法和注意事項。

一、query參數(shù)

Query參數(shù),顧名思義,是附加在URL后面的查詢字符串,以?開頭,后面跟著一系列的key=value對,多個鍵值對之間用&分隔。

1. 傳遞參數(shù)

在主路由中定義跳轉的子路由,使用<router-link>組件可以方便地實現(xiàn)query參數(shù)的傳遞。有兩種方式來指定to屬性:字符串寫法和對象寫法。

  • 字符串寫法:直接在to屬性中寫入路徑和查詢字符串。
<template>
  <div class="news">
    <!-- 導航區(qū) -->
    <ul>
      <li v-for="news in newsList" :key="news.id">
        <!-- 第一種寫法
        路徑拼接字符串
        -->
       <RouterLink :to="`/news/detail?id=${news.id}&title=${news.title}&content=${news.content}`">{{news.title}}</RouterLink> -->
      </li>
    </ul>
    <!-- 展示區(qū)
     點擊 路由跳轉 內(nèi)容展示到 路由展示區(qū)
    -->
    <div class="news-content">
      <RouterView></RouterView>
    </div>
  </div>
</template>

<script setup lang="ts" name="News">
  import {reactive} from 'vue'
  import {RouterView,RouterLink} from 'vue-router'

  const newsList = reactive([
    {id:'asfdtrfay01',title:'很好的抗癌食物',content:'西藍花'},
    {id:'asfdtrfay02',title:'如何一夜暴富',content:'學IT'},
    {id:'asfdtrfay03',title:'震驚,萬萬沒想到',content:'明天是周一'},
    {id:'asfdtrfay04',title:'好消息!好消息!',content:'快過年了'}
  ])

</script>

<style scoped>
/* 新聞 */
.news {
  padding: 0 20px;
  display: flex;
  justify-content: space-between;
  height: 100%;
}
.news ul {
  margin-top: 30px;
  /* list-style: none; */
  padding-left: 10px;
}
.news li::marker {
  color: #64967E;
}
.news li>a {
  font-size: 18px;
  line-height: 40px;
  text-decoration: none;
  color: #64967E;
  text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {
  width: 70%;
  height: 90%;
  border: 1px solid;
  margin-top: 20px;
  border-radius: 10px;
}
</style> 
  • 對象寫法:通過一個對象來指定路徑和查詢參數(shù)。對象的path屬性指定路徑,query屬性則是一個包含所有查詢參數(shù)的對象。
<template>
  <div class="news">
    <!-- 導航區(qū) -->
    <ul>
      <li v-for="news in newsList" :key="news.id">
       <!-- 第二種寫法
         指定路由名稱
         參數(shù)query列表
         -->
        <RouterLink 
          :to="{
            name:'xiang',
            query:{
              id:news.id,
              title:news.title,
              content:news.content
            }
          }"
        >
          {{news.title}}
        </RouterLink>

      </li>
    </ul>
    <!-- 展示區(qū)
     點擊 路由跳轉 內(nèi)容展示到 路由展示區(qū)
    -->
    <div class="news-content">
      <RouterView></RouterView>
    </div>
  </div>
</template>

<script setup lang="ts" name="News">
  import {reactive} from 'vue'
  import {RouterView,RouterLink} from 'vue-router'

  const newsList = reactive([
    {id:'asfdtrfay01',title:'很好的抗癌食物',content:'西藍花'},
    {id:'asfdtrfay02',title:'如何一夜暴富',content:'學IT'},
    {id:'asfdtrfay03',title:'震驚,萬萬沒想到',content:'明天是周一'},
    {id:'asfdtrfay04',title:'好消息!好消息!',content:'快過年了'}
  ])

</script>

<style scoped>
/* 新聞 */
.news {
  padding: 0 20px;
  display: flex;
  justify-content: space-between;
  height: 100%;
}
.news ul {
  margin-top: 30px;
  /* list-style: none; */
  padding-left: 10px;
}
.news li::marker {
  color: #64967E;
}
.news li>a {
  font-size: 18px;
  line-height: 40px;
  text-decoration: none;
  color: #64967E;
  text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {
  width: 70%;
  height: 90%;
  border: 1px solid;
  margin-top: 20px;
  border-radius: 10px;
}
</style>

2. 接收參數(shù)

在目標組件中,也就是上述定義的'xiang'路由組件,我們可以使用useRoute來獲取傳遞過來的query參數(shù)。useRoute返回一個響應式的路由對象,其中的query屬性包含了所有的查詢參數(shù)。

<template>
  <ul class="news-list">
    <li>編號:{{ query.id }}</li>
    <li>標題:{{ query.title }}</li>
    <li>內(nèi)容:{{ query.content }}</li>
  </ul>
</template>

<script setup lang="ts" name="Detail">
  import {toRefs} from 'vue'
  import {useRoute} from 'vue-router'
  // 接收跳轉請求的query參數(shù)
  let route = useRoute()
  console.log(route.query)
  let {query} = toRefs(route)


</script>

運行結果如下,在控制臺可以接收到路由請求參數(shù)。

二、params參數(shù)

Params參數(shù)是通過URL的路徑部分來傳遞參數(shù)的,通常用于傳遞動態(tài)路由參數(shù)。

1. 傳遞參數(shù)

同樣地,我們使用<router-link>組件來傳遞params參數(shù)。但需要注意的是,如果使用對象寫法來指定to屬性,我們必須使用路由的name配置項,而不能直接使用path。

  • 字符串寫法:直接在to屬性中寫入包含參數(shù)的路徑。
<RouterLink :to="`/news/detail/${news.id}/${news.title}/${news.content}`">{{news.title}}</RouterLink>
  • 對象寫法:通過一個對象來指定路由名稱和參數(shù)。對象的name屬性指定路由名稱,params屬性則是一個包含所有路徑參數(shù)的對象。
<RouterLink 
  :to="{
    name:'xiang', // 使用name配置項
    params:{
      id:news.id,
      title:news.title,
      content:news.content
    }
  }"
>
  {{news.title}}
</RouterLink>

2. 接收參數(shù)

在目標組件中,我們同樣可以使用useRoute來獲取傳遞過來的params參數(shù)。但這次我們需要訪問的是route.params屬性。

<template>
  <ul class="news-list">
    <!--獲取路由param的參數(shù)-->
    <li>編號:{{ route.params.id }}</li>
    <li>標題:{{ route.params.title }}</li>
    <li>內(nèi)容:{{ route.params.content }}</li>
  </ul>
</template>

<script setup lang="ts" name="Detail">
  import {toRefs} from 'vue'
  import {useRoute} from 'vue-router'
  // 接收跳轉請求的param參數(shù)
  let route = useRoute()
  console.log(route)

</script>

需要注意的是,使用param獲取路由參數(shù),需要在路由定義的ts文件中,定義好參數(shù),如:

    {
      name:'xinwen',
      path:'/news',
      component:News,
      // 嵌套子路由
      children:[
        {
          name:'xiang',
          path:'detail/:id/:title/:content?',
          component:Detail
        }
      ]
    }

三、總結

  • 當使用params參數(shù)時,如果采用對象寫法來指定to屬性,必須使用路由的name配置項,而不能直接使用path。這是因為params參數(shù)需要通過路由的名稱來進行匹配,而不是簡單地拼接路徑。
  • 在傳遞params參數(shù)之前,需要在路由規(guī)則中為對應的參數(shù)占位。例如,如果我們要傳遞一個名為id的參數(shù),那么路由規(guī)則應該包含一個:id的動態(tài)段。
  • Query參數(shù)和params參數(shù)各有優(yōu)缺點。Query參數(shù)簡單易用,不需要對路由規(guī)則做特殊處理;但缺點是它們會出現(xiàn)在URL中,可能會影響用戶體驗和SEO。Params參數(shù)更加靈活和安全,不會出現(xiàn)在URL中(除非你顯式地想要它們出現(xiàn));但缺點是需要對路由規(guī)則進行特殊配置。

到此這篇關于Vue3中的路由傳參兩種方式的文章就介紹到這了,更多相關Vue3路由傳參詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于Vue3+WebSocket實現(xiàn)實時文件傳輸監(jiān)控系統(tǒng)

    基于Vue3+WebSocket實現(xiàn)實時文件傳輸監(jiān)控系統(tǒng)

    WebSocket是一種在客戶端和服務器之間進行雙向通信的網(wǎng)絡協(xié)議,它通過建立持久性的、全雙工的連接,允許服務器主動向客戶端發(fā)送數(shù)據(jù),本文小編給大家介紹了基于Vue3+WebSocket實現(xiàn)實時文件傳輸監(jiān)控系統(tǒng),需要的朋友可以參考下
    2025-03-03
  • vue分頁插件的使用方法

    vue分頁插件的使用方法

    這篇文章主要介紹了vue分頁插件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • vue如何使用driver.js實現(xiàn)項目功能向導指引

    vue如何使用driver.js實現(xiàn)項目功能向導指引

    driver.js 是一個輕量級、無依賴的原生JavaScript引擎,在整個頁面中驅動用戶的注意力,強大的、高度可定制的原生JavaScript引擎,無外部依賴,支持所有主流瀏覽器,這篇文章主要介紹了vue如何使用driver.js實現(xiàn)項目功能向導指引,需要的朋友可以參考下
    2023-03-03
  • Vue的輪播圖組件實現(xiàn)方法

    Vue的輪播圖組件實現(xiàn)方法

    下面小編就為大家分享一篇Vue的輪播圖組件實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue實現(xiàn)同一個頁面可以有多個router-view的方法

    vue實現(xiàn)同一個頁面可以有多個router-view的方法

    今天小編就為大家分享一篇vue實現(xiàn)同一個頁面可以有多個router-view的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解Vue如何實現(xiàn)響應式布局

    詳解Vue如何實現(xiàn)響應式布局

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)響應式布局的兩種方法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-12-12
  • vue-antd?form組件封裝全過程

    vue-antd?form組件封裝全過程

    這篇文章主要介紹了vue-antd?form組件封裝全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue路由切換頁面不更新問題解決方案

    Vue路由切換頁面不更新問題解決方案

    這篇文章主要介紹了Vue路由切換頁面不更新問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Vue利用draggable實現(xiàn)多選拖拽效果

    Vue利用draggable實現(xiàn)多選拖拽效果

    這篇文章主要為大家詳細介紹了如何利用vue中的draggable插件實現(xiàn)多選拖拽效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • vue使用Element-UI部分組件適配移動端問題

    vue使用Element-UI部分組件適配移動端問題

    這篇文章主要介紹了vue使用Element-UI部分組件適配移動端問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

淮北市| 广汉市| 蓬安县| 广饶县| 茂名市| 临西县| 鄄城县| 河池市| 陇南市| 张家川| 凤凰县| 望奎县| 根河市| 尼玛县| 榆中县| 蒲城县| 千阳县| 兰考县| 齐河县| 中牟县| 台南市| 铜川市| 阜宁县| 浪卡子县| 苍山县| 南宫市| 遂宁市| 泰来县| 峨山| 麻栗坡县| 普安县| 河南省| 惠州市| 萨迦县| 福鼎市| 荔波县| 鄂托克前旗| 绩溪县| 丹江口市| 长子县| 乐平市|