Vue3之路由的query參數(shù)和params參數(shù)用法
路由中的參數(shù)
在 Vue 中,路由參數(shù)是指在訪問不同頁面時傳遞的信息。
它們可以用來動態(tài)地構(gòu)建頁面內(nèi)容,實現(xiàn)頁面間的數(shù)據(jù)傳遞和狀態(tài)管理。
Vue 的路由系統(tǒng)提供了多種方式來處理路由參數(shù),包括動態(tài)路由、查詢參數(shù)和路由元信息等
query參數(shù)
我們接著使用上節(jié)用到的相關(guān)代碼,在路徑匹配后面我們加了一個問號,在問號后面我們加了一個參數(shù)
<template> <div class="plays"> <!--導(dǎo)航區(qū)--> <ul> <li v-for="play in newList" :key="play.id"> <RouterLink to="/plays/detail?a=1">{{play.title}}</RouterLink> </li> </ul> <!--展示區(qū)--> <div class="news-content"> <RouterView></RouterView> </div> </div> </template>
在地址欄我們可以清楚的看到,但是這也僅僅是淺淺看一看
接下來我們打開Detail.vue文件,我們導(dǎo)入一個useRoute
通過useRoute可以方便地訪問當(dāng)前路由的路徑、參數(shù)、查詢參數(shù)等信息,而不需要依賴于this.$route。
接下來我們應(yīng)該實例化一下函數(shù),之后我們就可以在上面的模版中盡顯表達(dá)了
<template> <ul class="news-list"> <li>編號:{{ route.query.id }}</li> <li>標(biāo)題:{{ route.query.title }}</li> <li>內(nèi)容:{{ route.query.content }}</li> </ul> </template>
但是現(xiàn)在其實我們并不能匹配到id、title、content,可以匹配到的或許僅僅是a,然后顯示出1,接下來我們要解決這個問題
<template> <div class="plays"> <!--導(dǎo)航區(qū)--> <ul> <li v-for="play in newList" :key="play.id"> <RouterLink :to="`/plays/detail?id=${play.id}`">{{play.title}}</RouterLink> </li> </ul> <!--展示區(qū)--> <div class="news-content"> <RouterView></RouterView> </div> </div> </template>
這樣我們就可以點擊哪個出現(xiàn)哪個對應(yīng)的編號了
修改后的如下
<RouterLink :to="`/plays/detail?id=${play.id}&title=${play.title}&content=${play.content}`">{{play.title}}</RouterLink>
上面的是第一種寫法
下面是第二種寫法
<RouterLink :to="{ name:'detail', query:{ id:play.id, title:play.title, content:play.content } }" > {{play.title}} </RouterLink>
params參數(shù)
還是需要useRoute的導(dǎo)入,接下來我們需要修改一下index.ts中的path
后面的問號表示可有可無
path:'Detail/:id/:title/:content?',
模版這里也要修改一下
<template> <ul class="news-list"> <li>編號:{{ route.params.id }}</li> <li>標(biāo)題:{{ route.params.title }}</li> <li>內(nèi)容:{{ route.params.content }}</li> </ul> </template>
同樣也有兩種寫法
</RouterLink> --> <!-- <RouterLink :to="`/news/detail/${play.id}/${play.title}/${play.content}`">{{play.title}}</RouterLink> --> <RouterLink :to="{ name:'Detail', params:{ id:play.id, title:play.title, content:play.content } }" > {{play.title}} </RouterLink>
綜上所述:
1:傳遞params
參數(shù)時,若使用to
的對象寫法,必須使用name
配置項,不能用path
。
2:傳遞params
參數(shù)時,需要提前在規(guī)則中占位。
區(qū)別和適用場景
- Params 參數(shù) 適用于標(biāo)識資源、動態(tài)路由等需要作為路由一部分的信息,如 /user/:id;
- Query 參數(shù) 適用于配置項、篩選條件等不需要作為路由一部分的可選參數(shù),如 /user?id=123。
總結(jié)
路由參數(shù)是 Vue 路由系統(tǒng)中非常重要的一部分,通過動態(tài)路由參數(shù)、查詢參數(shù)和路由元信息,我們可以實現(xiàn)更靈活的頁面導(dǎo)航和數(shù)據(jù)傳遞。
熟練掌握這些技巧可以幫助我們更好地構(gòu)建復(fù)雜的單頁面應(yīng)用
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vuex獲取state對象中值的所有方法小結(jié)(module中的state)
這篇文章主要介紹了vuex獲取state對象中值的所有方法小結(jié)(module中的state),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04使用vue2.6實現(xiàn)抖音【時間輪盤】屏保效果附源碼
前段時間看抖音,有人用時間輪盤作為動態(tài)的桌面壁紙,一時間成為全網(wǎng)最火的電腦屏保,后來小米等運用市場也出現(xiàn)了【時間輪盤】,有點像五行八卦,感覺很好玩,于是突發(fā)奇想,自己寫一個網(wǎng)頁版小DEMO玩玩,需要的朋友可以參考下2019-04-04Vue服務(wù)端渲染和Vue瀏覽器端渲染的性能對比(實例PK )
這篇文章主要介紹了Vue服務(wù)端渲染和Vue瀏覽器端渲染的性能對比(實例PK ),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03webpack dev-server代理websocket問題
這篇文章主要介紹了webpack dev-server代理websocket問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08vue3+element-plus 實現(xiàn)動態(tài)菜單和動態(tài)路由的渲染的項目實踐
本文主要介紹了vue3+element-plus 實現(xiàn)動態(tài)菜單和動態(tài)路由的渲染的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11使用Pinia Persistedstate插件實現(xiàn)狀態(tài)持久化的操作方法
Pinia 作為 Vue 的新一代狀態(tài)管理工具,以其輕量化和易用性受到開發(fā)者的喜愛,然而,Pinia 默認(rèn)使用內(nèi)存存儲狀態(tài),為了解決這個問題,我們可以借助 Pinia Persistedstate 插件來實現(xiàn)狀態(tài)的持久化存儲,本文將詳細(xì)介紹該插件的使用方法,需要的朋友可以參考下2024-11-11