vue3在路由里取參數(shù)幾種常見(jiàn)的方法
在 Vue 3 中,使用 Vue Router 獲取路由參數(shù)有多種方式。以下是幾種常見(jiàn)的方法:
1. 通過(guò) this.$route 獲?。∣ptions API)
如果你使用的是 Options API,可以通過(guò) this.$route
訪問(wèn)路由對(duì)象,并從中提取參數(shù)。
export default { mounted() { // 獲取動(dòng)態(tài)路由參數(shù) const id = this.$route.params.id; console.log('Route Param:', id); // 獲取查詢參數(shù) const queryParam = this.$route.query.someQueryParam; console.log('Query Param:', queryParam); } };
2. 通過(guò) useRoute 獲取(Composition API)
在 Composition API 中,可以使用 useRoute
鉤子來(lái)獲取路由信息。
import { useRoute } from 'vue-router'; export default { setup() { const route = useRoute(); // 獲取動(dòng)態(tài)路由參數(shù) const id = route.params.id; console.log('Route Param:', id); // 獲取查詢參數(shù) const queryParam = route.query.someQueryParam; console.log('Query Param:', queryParam); return { id, queryParam }; } };
3. 監(jiān)聽(tīng)參數(shù)變化
如果路由參數(shù)可能會(huì)發(fā)生變化(例如用戶導(dǎo)航到同一個(gè)路由但參數(shù)不同),你需要監(jiān)聽(tīng)參數(shù)的變化。
使用 watch
import { useRoute, watch } from 'vue-router'; import { ref } from 'vue'; export default { setup() { const route = useRoute(); const id = ref(route.params.id); // 監(jiān)聽(tīng)路由參數(shù)變化 watch( () => route.params.id, (newId) => { id.value = newId; console.log('Updated Route Param:', newId); } ); return { id }; } };
4. 動(dòng)態(tài)路由參數(shù)示例
假設(shè)你的路由配置如下:
const routes = [ { path: '/user/:id', component: UserComponent } ];
- 動(dòng)態(tài)參數(shù)
id
可以通過(guò)route.params.id
獲取。 - 查詢參數(shù)(如
/user/123?name=John
)可以通過(guò)route.query.name
獲取。
5. 完整示例
以下是一個(gè)完整的示例,展示如何在組件中獲取和監(jiān)聽(tīng)路由參數(shù):
<template> <div> <p>User ID: {{ id }}</p> <p>Query Param: {{ queryParam }}</p> </div> </template> <script> import { useRoute, watch } from 'vue-router'; import { ref } from 'vue'; export default { setup() { const route = useRoute(); const id = ref(route.params.id); const queryParam = ref(route.query.name); // 監(jiān)聽(tīng)路由參數(shù)變化 watch( () => route.params.id, (newId) => { id.value = newId; } ); // 監(jiān)聽(tīng)查詢參數(shù)變化 watch( () => route.query.name, (newName) => { queryParam.value = newName; } ); return { id, queryParam }; } }; </script>
注意事項(xiàng)
動(dòng)態(tài)路由參數(shù) vs 查詢參數(shù):
- 動(dòng)態(tài)路由參數(shù):定義在路徑中的參數(shù)(如
/user/:id
)。 - 查詢參數(shù):URL 中的查詢字符串(如
/user?id=123&name=John
)。
- 動(dòng)態(tài)路由參數(shù):定義在路徑中的參數(shù)(如
參數(shù)變化時(shí)重新加載數(shù)據(jù):
如果路由參數(shù)發(fā)生變化,但組件沒(méi)有重新加載(因?yàn)閺?fù)用了相同的組件實(shí)例),需要手動(dòng)監(jiān)聽(tīng)參數(shù)變化并更新數(shù)據(jù)。
希望這些內(nèi)容能幫助你順利在 Vue 3 中獲取路由參數(shù)!
總結(jié)
到此這篇關(guān)于vue3在路由里取參數(shù)幾種常見(jiàn)的方法的文章就介紹到這了,更多相關(guān)vue3路由取參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue vuex vue-rouert后臺(tái)項(xiàng)目——權(quán)限路由(適合初學(xué))
這篇文章主要介紹了vue vuex vue-rouert后臺(tái)項(xiàng)目——權(quán)限路由,通過(guò)本文可以很清除的捋清楚vue+vuex+vue-router的關(guān)系,本版本非常簡(jiǎn)單,適合初學(xué)者,需要的朋友可以參考下2017-12-12淺談Vue render函數(shù)在ElementUi中的應(yīng)用
今天小編就為大家分享一篇淺談Vue render函數(shù)在ElementUi中的應(yīng)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue spa應(yīng)用中的路由緩存問(wèn)題與解決方案
這篇文章主要介紹了vue spa應(yīng)用中的路由緩存問(wèn)題與解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05對(duì)Vue.js之事件的綁定(v-on: 或者 @ )詳解
今天小編就為大家分享一篇對(duì)Vue.js之事件的綁定(v-on: 或者 @ )詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue3封裝 Message消息提示實(shí)例函數(shù)詳解
這篇文章主要介紹了Vue3封裝 Message消息提示實(shí)例函數(shù),具有一定的實(shí)用價(jià)值,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助2021-09-09