最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決vue watch數(shù)據(jù)的方法被調用了兩次的問題

 更新時間:2020年11月07日 11:52:40   作者:巴中第一皇子  
這篇文章主要介紹了解決vue watch數(shù)據(jù)的方法被調用了兩次的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

背景:

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

問題:

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

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

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

結局:

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

補充知識:vue watch一個對象或數(shù)組時,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 

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

以上這篇解決vue watch數(shù)據(jù)的方法被調用了兩次的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

安西县| 佛学| 竹山县| 龙山县| 江口县| 汉寿县| 肇庆市| 天长市| 启东市| 宁夏| 拉孜县| 神池县| 筠连县| 龙井市| 方山县| 霍山县| 厦门市| 庄浪县| 社会| 开封市| 巨野县| 邓州市| 桂平市| 清涧县| 本溪| 河曲县| 清苑县| 克拉玛依市| 柞水县| 时尚| 临武县| 玉山县| 永康市| 保德县| 定结县| 溧水县| 日喀则市| 临汾市| 天门市| 崇礼县| 抚松县|