1. 程式人生 > >vue路由跳轉時傳參params和query的區別

vue路由跳轉時傳參params和query的區別

其實是很簡單的問題,不過還是踩坑了,在這裡說下

1.params傳參,用name屬性對應跳轉路徑,類似於post提交,引數不會出現在跳轉路徑裡。

<router-link :to="{ name:'cityList' ,params :{cityId:scope.row.id} }">
	<el-button size="mini"  class="button1">{{$t('m.cityList')}}({{scope.row.sum}})</el-button>
</router-link>

子頁面接收時

var cityId = this.$route.params.cityId

個人覺得這種方式比query方便很多,能避免一些問題,不過也根據實際情況而定(比如子頁面重新整理後還要用到傳過來的引數,用query傳參就好一點)

2.query傳參,用path屬性對應跳轉路徑,類似於get提交,引數是在路徑裡顯示的。

<router-link :to="{ path:'cityList' ,query :{cityId:scope.row.id} }">
	<el-button size="mini"  class="button1">{{$t('m.cityList')}}({{scope.row.sum}})</el-button>
</router-link>

子頁面接收時

var cityId = this.$route.query.cityId

這種方式子頁面重新整理時,之前路由帶過來的引數還會在,有時候會引起比必要的麻煩

我遇到的坑:兩個同級頁面,用query傳參。A通過路由帶參跳轉到B頁面,然後通過引數過濾掉B頁面的一些資料。之後重新整理B頁面,由於引數是在路徑裡的,還是過濾掉的資料,這個時候要麼在B頁面入口進入B頁面,要麼就得在頁面再做處理才能符合需求,改用params之後就沒這個問題了。