Vue中的動(dòng)態(tài)路由匹配路由問(wèn)題
vue-router 動(dòng)態(tài)路由匹配
我們經(jīng)常需要把某種模式匹配到的所有路由,全都映射到同個(gè)組件。
例如,我們有一個(gè) User 組件,對(duì)于所有 ID 各不相同的用戶,都要使用這個(gè)組件來(lái)渲染。
那么,我們可以在 vue-router 的路由路徑中使用“動(dòng)態(tài)路徑參數(shù)”(dynamic segment) 來(lái)達(dá)到這個(gè)效果:
簡(jiǎn)而言之,動(dòng)態(tài)路由匹配解決的是頁(yè)面根據(jù)id跳轉(zhuǎn)的問(wèn)題
// appfront/src/router
const User = {
template: '<div>User</div>'
}
const router = new VueRouter({
routes: [
// 動(dòng)態(tài)路徑參數(shù) 以冒號(hào)開(kāi)頭
{ path: '/user/:id', component: User }
]
})
現(xiàn)在呢,像 /user/foo 和 /user/bar 都將映射到相同的路由。
一個(gè)“路徑參數(shù)”使用冒號(hào) : 標(biāo)記。當(dāng)匹配到一個(gè)路由時(shí),參數(shù)值會(huì)被設(shè)置到 this.$route.params,可以在每個(gè)組件內(nèi)使用。
于是,我們可以更新 User 的模板,輸出當(dāng)前用戶的 ID:
const User = {
template: '<div>User {{ $route.params.id }}</div>'
}
你可以在一個(gè)路由中設(shè)置多段“路徑參數(shù)”,對(duì)應(yīng)的值都會(huì)設(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 對(duì)象還提供了其它有用的信息,例如,$route.query (如果 URL 中有查詢參數(shù))、$route.hash 等等。
你可以查看 API 文檔 的詳細(xì)說(shuō)明
下面這個(gè)是在實(shí)際應(yīng)用中使用動(dòng)態(tài)路由進(jìn)行跳轉(zhuǎn)對(duì)應(yīng)頁(yè)(這里采用的是按鈕跳轉(zhuǎn),還可以route-link跳轉(zhuǎn)此處略過(guò))
// components/yyy.vue
...
<el-button
size="mini"
@click="handleEdit(scope.row.Id)">編輯</el-button>
...
<script>
export default {
methods: {
handleEdit(Id) {
# 跳轉(zhuǎn)到xxx+id頁(yè)面
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)后對(duì)參數(shù)進(jìn)行獲取
// components/xxx.vue
...
<div>{{ this.$route.params.id }}</div>
...
參考:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue element-ui里的table中表頭與表格出現(xiàn)錯(cuò)位的解決
這篇文章主要介紹了vue element-ui里的table中表頭與表格出現(xiàn)錯(cuò)位的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue Element前端應(yīng)用開(kāi)發(fā)之開(kāi)發(fā)環(huán)境的準(zhǔn)備工作
這篇文章主要介紹了Vue Element前端應(yīng)用開(kāi)發(fā)之開(kāi)發(fā)環(huán)境的準(zhǔn)備工作,對(duì)Vue感興趣的同學(xué),可以來(lái)學(xué)習(xí)一下2021-05-05
詳解VS Code使用之Vue工程配置format代碼格式化
這篇文章主要介紹了詳解VS Code使用之Vue工程配置format代碼格式化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Vue中EpicEditor和vue-quill-editor的使用詳解
EpicEditor和Vue-quill-editor都是基于Quill.js的富文本編輯器,并且都提供了許多強(qiáng)大的功能,下面我們就來(lái)介紹一下二者的具體使用,感興趣的小伙伴可以了解一下2023-11-11
vue-cli webpack2項(xiàng)目打包優(yōu)化分享
下面小編就為大家分享一篇vue-cli webpack2項(xiàng)目打包優(yōu)化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
antd日期選擇器禁止選擇當(dāng)天之前的時(shí)間操作
這篇文章主要介紹了antd日期選擇器禁止選擇當(dāng)天之前的時(shí)間操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10

