vue3在路由里取參數(shù)幾種常見的方法
在 Vue 3 中,使用 Vue Router 獲取路由參數(shù)有多種方式。以下是幾種常見的方法:
1. 通過 this.$route 獲取(Options API)
如果你使用的是 Options API,可以通過 this.$route 訪問路由對象,并從中提取參數(shù)。
export default {
mounted() {
// 獲取動態(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. 通過 useRoute 獲?。–omposition API)
在 Composition API 中,可以使用 useRoute 鉤子來獲取路由信息。
import { useRoute } from 'vue-router';
export default {
setup() {
const route = useRoute();
// 獲取動態(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)聽參數(shù)變化
如果路由參數(shù)可能會發(fā)生變化(例如用戶導(dǎo)航到同一個(gè)路由但參數(shù)不同),你需要監(jiān)聽參數(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)聽路由參數(shù)變化
watch(
() => route.params.id,
(newId) => {
id.value = newId;
console.log('Updated Route Param:', newId);
}
);
return { id };
}
};
4. 動態(tài)路由參數(shù)示例
假設(shè)你的路由配置如下:
const routes = [
{
path: '/user/:id',
component: UserComponent
}
];
- 動態(tài)參數(shù)
id可以通過route.params.id獲取。 - 查詢參數(shù)(如
/user/123?name=John)可以通過route.query.name獲取。
5. 完整示例
以下是一個(gè)完整的示例,展示如何在組件中獲取和監(jiān)聽路由參數(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)聽路由參數(shù)變化
watch(
() => route.params.id,
(newId) => {
id.value = newId;
}
);
// 監(jiān)聽查詢參數(shù)變化
watch(
() => route.query.name,
(newName) => {
queryParam.value = newName;
}
);
return { id, queryParam };
}
};
</script>
注意事項(xiàng)
動態(tài)路由參數(shù) vs 查詢參數(shù):
- 動態(tài)路由參數(shù):定義在路徑中的參數(shù)(如
/user/:id)。 - 查詢參數(shù):URL 中的查詢字符串(如
/user?id=123&name=John)。
- 動態(tài)路由參數(shù):定義在路徑中的參數(shù)(如
參數(shù)變化時(shí)重新加載數(shù)據(jù):
如果路由參數(shù)發(fā)生變化,但組件沒有重新加載(因?yàn)閺?fù)用了相同的組件實(shí)例),需要手動監(jiān)聽參數(shù)變化并更新數(shù)據(jù)。
希望這些內(nèi)容能幫助你順利在 Vue 3 中獲取路由參數(shù)!
總結(jié)
到此這篇關(guān)于vue3在路由里取參數(shù)幾種常見的方法的文章就介紹到這了,更多相關(guān)vue3路由取參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目打包后請求地址錯(cuò)誤/打包后跨域操作
這篇文章主要介紹了vue項(xiàng)目打包后請求地址錯(cuò)誤/打包后跨域操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
vue2之響應(yīng)式雙向綁定,在對象或數(shù)組新增屬性頁面無響應(yīng)的情況
這篇文章主要介紹了vue2之響應(yīng)式雙向綁定,在對象或數(shù)組新增屬性頁面無響應(yīng)的情況及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue使用v-if v-show頁面閃爍,div閃現(xiàn)的解決方法
在頁面層次結(jié)構(gòu),數(shù)據(jù)較多的時(shí)候,用v-if或者v-show就會出現(xiàn)div閃現(xiàn),或者部分閃爍的結(jié)果。怎么處理這樣的問題呢,下面小編給大家?guī)砹藇ue使用v-if v-show頁面閃爍,div閃現(xiàn)的解決方法,一起看看吧2018-10-10
vue使用 vxe-table實(shí)現(xiàn)跨表拖拽多表聯(lián)動互相拖拽數(shù)據(jù)功能
使用vxe-table實(shí)現(xiàn)跨表拖拽需啟用row-drag-config.isCrossTableDrag,并通過row-config.keyField指定唯一主鍵字段,確保多表格間數(shù)據(jù)聯(lián)動時(shí)主鍵不重復(fù),實(shí)現(xiàn)行級數(shù)據(jù)在不同表格間的拖拽交互,感興趣的朋友跟隨小編一起看看吧2025-08-08
vue點(diǎn)擊input彈出帶搜索鍵盤并監(jiān)聽該元素的方法
今天小編就為大家分享一篇vue點(diǎn)擊input彈出帶搜索鍵盤并監(jiān)聽該元素的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

