Vue路由組件傳遞參數(shù)的六種場(chǎng)景
一、引言
在Vue應(yīng)用程序中,路由組件是構(gòu)建單頁(yè)應(yīng)用的關(guān)鍵部分。傳遞參數(shù)給路由組件可以讓我們動(dòng)態(tài)地展示內(nèi)容,處理用戶輸入,以及實(shí)現(xiàn)各種交互功能。
二、路由參數(shù)
路由參數(shù)(Route Params):可以通過(guò)在路由路徑中定義動(dòng)態(tài)參數(shù)來(lái)傳遞數(shù)據(jù)。在路由配置中使用:
來(lái)定義參數(shù),然后在組件中通過(guò)this.$route.params
來(lái)獲取參數(shù)的值。
// 路由配置 { path: '/user/:id', component: UserComponent } // 組件中獲取參數(shù) this.$route.params.id
三、查詢參數(shù)
查詢參數(shù)(Query Params):可以通過(guò)在URL中使用查詢字符串的方式來(lái)傳遞參數(shù)。在組件中可以通過(guò)this.$route.query
來(lái)獲取查詢參數(shù)的值。
// 路由配置 { path: '/user', component: UserComponent } // URL:/user?id=123 // 組件中獲取參數(shù) this.$route.query.id
params和query傳參的區(qū)別
- query在刷新頁(yè)面的時(shí)候參數(shù)不會(huì)消失,params刷新頁(yè)面的時(shí)候參數(shù)會(huì)消失。
- 使用name+query或者path+query傳遞路徑參數(shù),使用name+params傳遞路徑參數(shù)。
- query參數(shù)顯示在url地址欄當(dāng)中,參數(shù)以鍵值對(duì)的形式追加在URL后,用?和&拼接參數(shù),而params傳參不會(huì)顯示在地址欄。
- query傳參適合傳遞可選的參數(shù),常用于根據(jù)用戶的選擇或配置進(jìn)行篩選、排序等操作。params傳參適合傳遞必要的、對(duì)應(yīng)特定資源的參數(shù),常用于標(biāo)識(shí)性的參數(shù)傳遞。
四、路由元信息
路由元信息(Route Meta):可以在路由配置中定義元信息來(lái)傳遞參數(shù)。在路由配置中使用meta
字段來(lái)定義元信息,然后在組件中通過(guò)this.$route.meta
來(lái)獲取元信息的值。
// 路由配置 { path: '/user', component: UserComponent, meta: { isAdmin: true } } // 組件中獲取元信息 this.$route.meta.isAdmin
五、Props傳參
Props傳參:可以通過(guò)在路由配置中使用props
字段來(lái)傳遞參數(shù)??梢詫?code>props設(shè)置為true
,這樣路由組件會(huì)自動(dòng)將路由參數(shù)映射為組件的屬性。也可以將props
設(shè)置為一個(gè)函數(shù),來(lái)自定義參數(shù)的映射方式。
// 路由配置 const routes = [ { path: '/user/:id', component: User, props: true //props: { id: '123' } //props: (route) => ({ id: route.params.id }) } ] // 路由組件 const User = { props: ['id'], template: '<div>User ID: {{ id }}</div>' }
六、編程式導(dǎo)航傳參
可以使用router.push
或router.replace
方法進(jìn)行編程式導(dǎo)航,并通過(guò)params
或query
字段傳遞參數(shù)。
router.push方法用于導(dǎo)航到一個(gè)新的路由,并將其添加到瀏覽器的歷史記錄中。可以通過(guò)第二個(gè)參數(shù)傳遞參數(shù)。
// 路由參數(shù) router.push({path: '/user/123'}) // 獲取參數(shù) console.log(this.$route.params.id); // 查詢參數(shù) router.push({path: '/user', query: { id: 123 } }) // 獲取參數(shù) console.log(this.$route.query.id);
當(dāng)使用router.push方法進(jìn)行路由跳轉(zhuǎn)時(shí),如果傳遞的路徑中包含動(dòng)態(tài)參數(shù)(例如/user/:id),則參數(shù)會(huì)被解析為路由的params屬性。
router.replace方法也用于導(dǎo)航到一個(gè)新的路由,但是不會(huì)將新的路由添加到瀏覽器的歷史記錄中,而是替換當(dāng)前的路由。同樣可以通過(guò)第二個(gè)參數(shù)傳遞參數(shù)。
router.replace({ path: '/user/123', params: { id: 123 } }); // 獲取參數(shù) this.$route.params.id
在上述示例中,使用path
屬性指定了目標(biāo)路徑為/user/123
,并使用params
屬性傳遞了參數(shù),其中id
參數(shù)的值為123。
七、聲明式導(dǎo)航傳參
在Vue Router中,可以使用router-link組件進(jìn)行聲明式導(dǎo)航,并通過(guò)to屬性傳遞參數(shù)。例如,要傳遞參數(shù)到目標(biāo)路徑/user/123,可以使用以下方式。
<router-link :to="{ path: '/user/' + id }">User</router-link> <router-link :to="{path:'/user', query:{id:123}}">User</router-link>
第一個(gè)router-link組件的to屬性使用了動(dòng)態(tài)的路徑參數(shù),這意味著在渲染時(shí),id是一個(gè)變量,它的值將會(huì)動(dòng)態(tài)地替換到路徑中。例如,如果id的值是123,那么生成的鏈接將是/user/123。這種方式使用了params參數(shù)來(lái)傳遞參數(shù)給目標(biāo)路由組件。
第二個(gè)router-link組件的to屬性使用了查詢參數(shù),這意味著在生成的鏈接中,會(huì)在URL后面添加查詢字符串,例如/user?id=123。這種方式使用了query參數(shù)來(lái)傳遞參數(shù)給目標(biāo)路由組件。
export default { created() { // 獲取傳遞的參數(shù) const userId = this.$route.params.id; console.log(userId); // 123 // const userId = this.$route.query.id; // console.log(userId); // 123 } };
我們用this.$route.params.id
和this.$route.params.id
獲取到傳遞的參數(shù)id
的值,即123。
八、最后的話
能力一般,水平有限,本文可能存在紕漏或錯(cuò)誤,如有問(wèn)題歡迎指正,感謝你閱讀這篇文章,如果你覺得寫得還行的話,不要忘記點(diǎn)贊、評(píng)論、收藏哦!祝生活愉快!
以上就是Vue路由組件傳遞參數(shù)的六種場(chǎng)景的詳細(xì)內(nèi)容,更多關(guān)于Vue路由組件傳遞參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決v-for中使用v-if或者v-bind:class失效的問(wèn)題
今天小編就為大家分享一篇解決v-for中使用v-if或者v-bind:class失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09如何通過(guò)Vue實(shí)現(xiàn)@人的功能
這篇文章主要介紹了如何通過(guò)vue實(shí)現(xiàn)微博中常見的@人的功能,同時(shí)增加鼠標(biāo)點(diǎn)擊事件和一些頁(yè)面小優(yōu)化。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12Vue中的數(shù)據(jù)監(jiān)聽和數(shù)據(jù)交互案例解析
這篇文章主要介紹了Vue中的數(shù)據(jù)監(jiān)聽和數(shù)據(jù)交互案例解析,在文章開頭部分先給大家介紹了vue中的數(shù)據(jù)監(jiān)聽事件$watch,具體代碼講解,大家可以參考下本文2017-07-07vue實(shí)現(xiàn)動(dòng)態(tài)給data函數(shù)中的屬性賦值
這篇文章主要介紹了vue實(shí)現(xiàn)動(dòng)態(tài)給data函數(shù)中的屬性賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09Vue前端導(dǎo)出Excel文件的詳細(xì)實(shí)現(xiàn)方案
在開發(fā)后臺(tái)管理系統(tǒng)的時(shí)候,很多地方都要用到導(dǎo)出excel表格,比如將table中的數(shù)據(jù)導(dǎo)出到本地,下面這篇文章主要給大家介紹了關(guān)于Vue導(dǎo)出Excel文件的相關(guān)資料,需要的朋友可以參考下2021-09-09