vue-router路由傳參的兩種方式詳解(params和query)
一、vue-router路由傳參問題
1、概念:
A、vue 路由傳參的使用場(chǎng)景一般應(yīng)用在父路由跳轉(zhuǎn)到子路由時(shí),攜帶參數(shù)跳轉(zhuǎn)。
B、傳參方式可劃分為 params 傳參和 query 傳參;
C、而 params 傳參又可分為在 url 中顯示參數(shù)和不顯示參數(shù)兩種方式;
D、即vue路由傳參的三種方式:query傳參(顯示參數(shù))、params傳參(顯示參數(shù))、params傳參(不顯示參數(shù))
2、常見場(chǎng)景:
A、點(diǎn)擊列表詳情,跳轉(zhuǎn)到詳情內(nèi)頁,傳遞id參數(shù)獲取詳情數(shù)據(jù)。
B、在輸入框輸入內(nèi)容后,點(diǎn)擊搜索,跳轉(zhuǎn)到搜索頁面,并把輸入的內(nèi)容一起帶到搜索頁面
方式一:query傳參(顯示參數(shù))
query 傳參(顯示參數(shù))可分為 聲明式 和 編程式 兩種方式
1、聲明式 router-link
該方式也是通過 router-link 組件的 to 屬性實(shí)現(xiàn),不過使用該方式傳值的時(shí)候,需要子路由提前配置好路由別名 (name 屬性),例如:
//子路由配置 { path: '/child, name: 'Child', component: Child } //父路由組件 <router-link :to="{name:'Child',query:{id:123}}">進(jìn)入Child路由</router-link>
2、編程式 this.$router.push
使用該方式傳值的時(shí)候,同樣需要子路由提前配置好路由別名 (name 屬性),例如:
//子路由配置 { path: '/child, name: 'Child', component: Child } //父路由編程式傳參(一般通過事件觸發(fā)) this.$router.push({ name:'Child', query:{ id:123 } }) 復(fù)制代碼
接收參數(shù):在子路由中可以通過下面代碼來獲取傳遞的參數(shù)值
this.$route.query console.log( this.$route.query ) // { id:123 } console.log( this.$route.query.id ) // 123
方式二:params傳參(顯示參數(shù))
params 傳參(顯示參數(shù))又可分為 聲明式 和 編程式 兩種方式
1、聲明式 router-link
該方式是通過 router-link 組件的 to 屬性實(shí)現(xiàn),該方法的參數(shù)可以是一個(gè)字符串路徑,或者一個(gè)描述地址的對(duì)象。使用該方式傳值的時(shí)候,需要子路由提前配置好參數(shù),例如:
//子路由配置 { path: '/child/:id', component: Child } //父路由組件 <router-link :to="/child/123">進(jìn)入Child路由</router-link>
2、編程式 this.$router.push
使用該方式傳值的時(shí)候,同樣需要子路由提前配置好參數(shù),例如:
//子路由配置 { path: '/child/:id', component: Child } //父路由編程式傳參(一般通過事件觸發(fā)) this.$router.push({ path:`/child/${id}`, // 模板字符串形式 })
接收參數(shù):在子路由中可以通過下面代碼來獲取傳遞的參數(shù)值
this.$route.params.id console.log( this.$route.params ) // { id:123 } console.log( this.$route.params.id ) // 123
方式三:params傳參(不顯示參數(shù))
params傳參(不顯示參數(shù))也可分為 聲明式 和 編程式 兩種方式,與方式一不同的是,這里是通過路由的別名 name 進(jìn)行傳值的
1、聲明式router-link
該方式也是通過 router-link
組件的 to
屬性實(shí)現(xiàn),例如:
<router-link :to="{name:'Child',params:{id:123}}">進(jìn)入Child路由</router-link>
2、編程式this.$router.push
使用該方式傳值的時(shí)候,同樣需要子路由提前配置好參數(shù),不過不能再使用 :/id
來傳遞參數(shù)了,因?yàn)楦嘎酚芍?,已?jīng)使用params來攜帶參數(shù)了,例如:
//子路由配置 { path: '/child, name: 'Child', component: Child } //父路由編程式傳參(一般通過事件觸發(fā)) this.$router.push({ name:'Child', params:{ id:123 } })
接收參數(shù):在子路由中可以通過下面代碼來獲取傳遞的參數(shù)值
this.$route.params.id console.log( this.$route.params ) // { id:123 } console.log( this.$route.params.id ) // 123
二、params傳參與query傳參區(qū)別:
- 1.使用query傳參,類似于get請(qǐng)求;使用params傳參,類似于post請(qǐng)求。
- 2.query的語法用于path編寫的傳參地址,也可用于name編寫的傳參地址;params的語法必須用于name編寫的傳參地址
- 3.query傳遞顯示參數(shù),刷新頁面,參數(shù)不丟失;params傳遞不顯示參數(shù),刷新頁面,參數(shù)丟失;params相對(duì)于query來說較安全一點(diǎn)
以上就是vue-router路由傳參的兩種方式詳解(params和query)的詳細(xì)內(nèi)容,更多關(guān)于vue-router路由傳參方式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vuex數(shù)據(jù)持久化的兩種方式:手動(dòng)存儲(chǔ)和vuex-persistedstate插件詳解
這篇文章主要介紹了Vuex數(shù)據(jù)持久化的兩種方式:手動(dòng)存儲(chǔ)和vuex-persistedstate插件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08vue實(shí)現(xiàn)點(diǎn)擊某個(gè)div顯示與隱藏內(nèi)容功能實(shí)例
最近做項(xiàng)目有用到某個(gè)div顯示與隱藏內(nèi)容,所以下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)點(diǎn)擊某個(gè)div顯示與隱藏內(nèi)容功能的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12Vue項(xiàng)目打包、合并及壓縮優(yōu)化網(wǎng)頁響應(yīng)速度
網(wǎng)站頁面的響應(yīng)速度與用戶體驗(yàn)息息相關(guān),直接影響到用戶是否愿意繼續(xù)訪問你的網(wǎng)站,所以這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包、合并及壓縮優(yōu)化網(wǎng)頁響應(yīng)速度的相關(guān)資料,需要的朋友可以參考下2021-07-07詳解Vuejs2.0 如何利用proxyTable實(shí)現(xiàn)跨域請(qǐng)求
本篇文章主要介紹了Vuejs2.0 如何利用proxyTable實(shí)現(xiàn)跨域請(qǐng)求,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08vue $set 給數(shù)據(jù)賦值的實(shí)例
今天小編就為大家分享一篇vue $set 給數(shù)據(jù)賦值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Vue3.x的版本中build后dist文件中出現(xiàn)legacy的js文件問題
這篇文章主要介紹了Vue3.x的版本中build后dist文件中出現(xiàn)legacy的js文件問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07