Vue中給我們提供了三種路由傳參方式,下面我們一個(gè)一個(gè)的來看一下:
注意:
- 獲取參數(shù)的時(shí)候是route,跳轉(zhuǎn)和傳參的時(shí)候是$router;
- 以下方法均不建議用來傳obj,若一定要傳,請先用JSON.stringify(obj)方法轉(zhuǎn)換;
方法一:params傳參:
//這個(gè)組件對應(yīng)的路由配置
{
//組件路徑
path: '/admin',
//組件別名
name: 'admin',
//組件名
component: Admin,
}
// 傳參
this.$router.push({
name:"admin",
//這里的params是一個(gè)對象,id是屬性名,item.id是值(可以從當(dāng)前組件或者Vue實(shí)例上直接取)
params:{id:item.id}
})
// 接收參數(shù)
this.$route.params.id
以上傳參方式基本上可以理解為ajax中的post請求方式,參數(shù)都是不可見的,但是該方法有一個(gè)弊端,就是當(dāng)頁面刷新后參數(shù)值會丟失?。。?/em>
方法二:路由屬性配置傳參:
//這個(gè)組件對應(yīng)的路由配置
{
//組件路徑
path: '/admin/:id',
//組件別名
name: 'admin',
//組件名
component: Admin,
}
// 傳參
this.$router.push({
name:"admin",
params:{id:item.id}
})
// 接收
this.$route.params.id
方法三:query傳參
//這個(gè)組件對應(yīng)的路由配置
{
//組件路徑
path: '/admin',
//組件別名
name: 'admin',
//組件名
component: Admin,
}
// 傳參
this.$router.push({
name:"/admin",
query:{id:item.id}
})
// 接收
this.$route.query.id
以上兩種方式是可以解決頁面刷新參數(shù)消失問題的,query這種方式可以理解為是ajax中的get方法,參數(shù)是直接在url后面添加的,參數(shù)是可見的。