Vue中的動態(tài)路由匹配路由問題
vue-router 動態(tài)路由匹配
我們經(jīng)常需要把某種模式匹配到的所有路由,全都映射到同個組件。
例如,我們有一個 User 組件,對于所有 ID 各不相同的用戶,都要使用這個組件來渲染。
那么,我們可以在 vue-router 的路由路徑中使用“動態(tài)路徑參數(shù)”(dynamic segment) 來達到這個效果:
簡而言之,動態(tài)路由匹配解決的是頁面根據(jù)id跳轉(zhuǎn)的問題
// appfront/src/router
const User = {
template: '<div>User</div>'
}
const router = new VueRouter({
routes: [
// 動態(tài)路徑參數(shù) 以冒號開頭
{ path: '/user/:id', component: User }
]
})
現(xiàn)在呢,像 /user/foo 和 /user/bar 都將映射到相同的路由。
一個“路徑參數(shù)”使用冒號 : 標記。當匹配到一個路由時,參數(shù)值會被設置到 this.$route.params,可以在每個組件內(nèi)使用。
于是,我們可以更新 User 的模板,輸出當前用戶的 ID:
const User = {
template: '<div>User {{ $route.params.id }}</div>'
}
你可以在一個路由中設置多段“路徑參數(shù)”,對應的值都會設置到 $route.params 中。
例如:
| 模式 | 匹配路徑 | $route.params |
|---|---|---|
| /user/:username | /user/evan | { username: 'evan' } |
| /user/:username/post/:post_id | /user/evan/post/123 | { username: 'evan', post_id: '123' } |
除了 $route.params 外,$route 對象還提供了其它有用的信息,例如,$route.query (如果 URL 中有查詢參數(shù))、$route.hash 等等。
你可以查看 API 文檔 的詳細說明
下面這個是在實際應用中使用動態(tài)路由進行跳轉(zhuǎn)對應頁(這里采用的是按鈕跳轉(zhuǎn),還可以route-link跳轉(zhuǎn)此處略過)
// components/yyy.vue
...
<el-button
size="mini"
@click="handleEdit(scope.row.Id)">編輯</el-button>
...
<script>
export default {
methods: {
handleEdit(Id) {
# 跳轉(zhuǎn)到xxx+id頁面
this.$router.push({path:'/xxx/'+Id})
},
</script>
// router/index.js
...
import Router from 'vue-router'
import xxx from '@/components/xxx'
...
export default new Router({
routes: [
...
{
path:'/xxx/:Id',
name:'xxx',
component: xxx
},
...
]
})
跳轉(zhuǎn)后對參數(shù)進行獲取
// components/xxx.vue
...
<div>{{ this.$route.params.id }}</div>
...
參考:
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue中報錯“error‘xxx‘?is?defined?but?never?used”問題及解決
介紹了兩種解決代碼導入問題的方法:單一代碼解決和全局解決,第一種方法是在代碼前面添加特定代碼并保存;第二種方法是在package.json中添加代碼后重啟項目,這些方法可以有效解決導包錯誤提示,希望對大家有幫助2024-10-10

