亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

vue項目中watch數據出現被調用兩次怎么解決

發布時間:2020-11-09 15:17:35 來源:億速云 閱讀:3168 作者:Leah 欄目:開發技術

vue項目中watch數據出現被調用兩次怎么解決?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

背景:

路由結構/video/1.mp4,即/video是父路由,/1.mp4是/video的動態子路由,在/video父路由中會通過url的params獲取視頻信息,即通過/1.mp4獲取對應的視頻完整信息,然后通過props傳到動態子路由中,然后子路由通過接受到的視頻對象,進行展示

問題:

當路由切換時,即當我點擊其他視頻時,導致動態子路由變化時,我監聽了/video父路由的變化并重新根據url的params獲取視頻對象,并自動通過props傳入子路由中,我在子路由中通過watch 視頻對象來進行一些操作,結果

watch: { 
 video () {
 console.log("test")
 }
}

test被打印了兩次,通過一番查找,才發現,當子路由切換時,父路由/video中的data數據都會被初始化為默認值,所以導致video對象變化了兩次,一次是因為初始化被重置為默認值空對象,一次是請求后的正確數據

結局:

將video對象存到vuex中,然后父路由將vuex中的video對象傳給子路由就行了

補充知識:vue watch一個對象或數組時,newvalue和oldvalue一樣

在官方的代碼改寫了一下,當深度watch一個對象時,newval和oldval的值為什么是相等的呢?

var vm = new Vue({
 data: {
 a: 1,
  c:{
   c1:1,
   c2:2
  }
 },
 watch: {
 'a': function (val, oldVal) {
  console.log(val, oldVal,(val== oldVal))
 },
 // 方法名
 'b': 'someMethod',
 // 深度 watcher
 'c': {
  handler: function (val, oldVal) { 
   console.log(val, oldVal,(val== oldVal))
   },
  deep: true
 }
 }
})
  
vm.a = 2 
vm.c.c1 = 2 

和深度無關,而是在修改(不是替換)對象或數組時,舊值將與新值相同,因為它們索引同一個對象/數組。Vue 不會保留修改之前值的副本。

關于vue項目中watch數據出現被調用兩次怎么解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临江市| 乐清市| 晋宁县| 阿坝| 本溪市| 江永县| 镇安县| 陆河县| 六安市| 武安市| 宁明县| 靖州| 石门县| 西青区| 泸定县| 虎林市| 昆明市| 石景山区| 华宁县| 佛学| 巨野县| 都匀市| 井陉县| 桦甸市| 宜黄县| 邹城市| 古蔺县| 大名县| 巍山| 巴马| 通渭县| 成都市| 甘洛县| 渑池县| 山阴县| 米林县| 县级市| 宁都县| 天祝| 怀安县| 花莲县|