vue路由跳轉時傳參params和query的區別
阿新 • • 發佈:2018-11-09
其實是很簡單的問題,不過還是踩坑了,在這裡說下
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之後就沒這個問題了。