一直理不清楚路由傳參的幾種方式,今天總結(jié)記錄下
第一種方法通過params與配置路由格式(特點(diǎn):刷新數(shù)據(jù)不會(huì)丟失淘讥,會(huì)以/user/1234
格式拼接顯示在url里面)
路由配置
{
path: '/user/:id',
name: 'user',
component: user
}
帶參數(shù)傳遞
//直接調(diào)用$router.push 實(shí)現(xiàn)攜帶參數(shù)的跳轉(zhuǎn)
this.$router.push({
path: '/user/123',
})
獲取對(duì)應(yīng)參數(shù)
this.$route.params.id
第二種方法通過路由屬性中的name來確定匹配的路由闪萄,通過params來傳遞參數(shù)(特點(diǎn):刷新會(huì)丟失參數(shù)才沧,但不會(huì)顯示在url里面)
路由配置
{
path: '/user',
name: 'user',
component: user
}
帶參數(shù)傳遞
this.$router.push({
name: 'user',
params: {
id: id
}
})
獲取對(duì)應(yīng)參數(shù)
this.$route.params.id
第三種方式使用path來匹配路由成翩,然后通過query來傳遞參數(shù)(特點(diǎn):刷新不會(huì)丟失數(shù)據(jù),但是參數(shù)會(huì)以?id:123
的格式拼接顯示在url里面)
路由配置
{
path: '/user',
name: 'user',
component: user
}
帶參數(shù)傳遞
this.$router.push({
path: '/user',
query: {
id: id
}
})
獲取對(duì)應(yīng)參數(shù)
this.$route.query.id
組件的主要功能就是可以復(fù)用叮雳,但是一旦使用了$route獲取路由參數(shù)想暗,該組件就會(huì)與路由參數(shù)具有高耦合性,不便于組件的復(fù)用帘不。為了解耦江滨,我們可以使用props來接受路由傳參,也可以自定義的讓父組件進(jìn)行出傳參厌均。(經(jīng)過測(cè)試這個(gè)方法只適合使用params能接收到的路由參數(shù),也就是上文中的第一告唆,二種方法)
在組件定義props來接收參數(shù)或者用于父組件傳參
props: {
id: {
type: String,
default: ''
}
}
接收參數(shù)
//可以使用以前的方法獲取參數(shù)
this.$route.params.id
//但是更推薦直接使用props
this.id