溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue項目中如何利用query實現(xiàn)傳參

發(fā)布時間:2020-11-10 15:25:22 來源:億速云 閱讀:1181 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)vue項目中如何利用query實現(xiàn)傳參,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

query 方式傳參和接收參數(shù)

傳參: this.$router.push({ path:'/xxx' query:{ id:id } }) this.$router.push 傳參時, 并不會引起頁面刷新。需要重新請求數(shù)據(jù),代碼如下。

<div>shopName:{{shop.shopName}}</div>
export default{
 data(){
  return {
   shop:{shopName:"shopName"},
   shopNo:"123"
  };
 },
 mounted(){
  // 初始時加載店鋪數(shù)據(jù)
  this.loadShop();
 },
 watch:{
  // shopNo改變時重新加載
  shopNo:function(newShopNo){
   this.loadShop();
  }
 },
 methods:{
  loadShop(){
   // 調(diào)用API獲取shop數(shù)據(jù)
   var shop = {/*獲取到的數(shù)據(jù)*/};
   this.shop=shop;
  }
 }
}

接收參數(shù): this.$route.query.id

params 方式傳參和接收參數(shù)

params 傳參 路由界面: router.js: 路由設(shè)置這里,當(dāng)你使用 params 方法傳參的時候,要在路由后面加參數(shù)名,并且傳參的時候,參數(shù)名要跟路由后面設(shè)置的參數(shù)名對應(yīng)。使用 query 方法,就沒有這種限制,直接在跳轉(zhuǎn)里面用就可以

vue項目中如何利用query實現(xiàn)傳參

傳參: this.$router.push({ name:'xxx' params:{ id:id } })

接收參數(shù): this.$route.params.id

注意:如果路由上面不寫參數(shù),也是可以傳過去的,但不會在 url 上面顯示出你的參數(shù),并且當(dāng)你跳到別的頁面或者刷新頁面的時候參數(shù)會丟失(如下圖所示),那依賴這個參數(shù)的 http 請求或者其他操作就會失敗。

query 傳參和 params 傳參的區(qū)別

用法上的: query 要用 path 來引入,params 要用 name 來引入,接收參數(shù)都是類似的,分別是 this.$route.query.name 和 this.$route.params.name。注意接收參數(shù)的時候,已經(jīng)是$route 而不是$router 了哦?。?/p>

展示上的: query 更加類似于我們 ajax 中 get 傳參,params 則類似于 post,說的再簡單一點,前者在瀏覽器地址欄中顯示參數(shù),后者則不顯示所以兩者不能同時使用?。?!

router-link 和編程式導(dǎo)航兩種跳轉(zhuǎn)方式

通過 router-link 我們可以向路由到的組件傳遞參數(shù),這在我們實際使用中時非常重要的。

編程式導(dǎo)航

vue項目中如何利用query實現(xiàn)傳參

router.push

router.replace 和 router.push()不同,使用 router.replace()會將一個訪問記錄 push 到 url 中,所以再退回了的時候一定會回到這里,而 router.replace()不是添加一個新的進入,而是替換棧頂元素,這樣,在返回的時候,就會返回到棧頂元素的下面一個。

router.go

在瀏覽器記錄中前進一步,等同于 history.forward() router.go(1)

后退一步記錄,等同于 history.back() router.go(-1)

動態(tài)傳參之坑

注意:params 傳參,push 里面只能是 name:'xxxx',不能是 path:'/xxx',因為 params 只能用 name 來引入路由,如果這里寫成了 path,接收參數(shù)頁面會是 undefined?。?!

補充知識:vue三種動態(tài)傳參的方式

如下場景:

<el-table-column
  label="操作">
  <template slot-scope="scope">
   <el-button size="mini" type="primary" @click="goList(scope.row.id)">個人信息表</el-button>
  </template>
 </el-table-column>

.直接占位符的方式

goList(id){ 
 this.$router.push({path:`/line/${id}`}) 
}

需要對應(yīng)路由配置如下:

  {
  path:'/line/:id',
  name:'line',
  component:line
  }

二、通過路由屬性中的name來確定匹配的路由,通過params來傳遞參數(shù)

goList(id){ 
  this.$router.push({ name:"line",params:{ orderId:id }}) 
}

對應(yīng)路由配置如下:

 {
  path:'/line',
  name:'line',
  component:line
}

三、通過 path來匹配路由,然后通過query來傳遞參數(shù),傳遞的參數(shù)會暴露在地址欄中

goList(id){ 
 this.$router.push({ path: '/line',query: { orderId:id }})
}

以上就是vue項目中如何利用query實現(xiàn)傳參,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI