Vue父組件向子組件傳遞一個動態(tài)的值,子組件如何保持實時更新實時更新?

最近用vue做一個新項目,經(jīng)歷了各種折磨,每次遇到問題都想大喊,格勞資上JQuery,氮素肯定是不行的,今天遇到一個小問題,Vue父組件向子組件傳遞一個動態(tài)的值,子組件只能獲取初始值,不能實時更新?

這就有點折磨人了,設(shè)想的是,父組件發(fā)生變化獲取數(shù)據(jù),動態(tài)傳遞給子組件,子組件實時刷新視圖。vue視圖是數(shù)據(jù)驅(qū)動的嘛,這設(shè)想就是完美而合理的了吧。可就是不行?。。?!

請教前輩,支個招讓用vuex,可就是個小功能能,有點殺雞用牛刀啊,又去查了查文檔,找了找資料。原來需要在子組件watch(監(jiān)聽)父組件數(shù)據(jù)的變化。

我就這樣使用watchl啦,

data() {
    return {
        frontPoints: 0    
    }
},
watch: {
    frontPoints(newValue, oldValue) {
        console.log(newValue)
    }
}

咦?又出幺蛾子了,完全監(jiān)聽不到嘛!??!
繼續(xù)查文檔,好嘛,原來這種方式只能watch基礎(chǔ)類型的變量,我傳遞的是個object啊,代碼,真的處處是坑。。。

為了防止將來繼續(xù)掉坑,做個總結(jié)吧

1、普通watch

如上所示,用過vue的都應(yīng)該挺熟悉的

2、數(shù)組的watch

data() {
    return {
        winChips: new Array(11).fill(0)   
    }
},
watch: {
  winChips: {
    handler(newValue, oldValue) {
      for (let i = 0; i < newValue.length; i++) {
        if (oldValue[i] != newValue[i]) {
          console.log(newValue)
        }
      }
    },
    deep: true
  }
}

3、對象的watch

data() {
  return {
    bet: {
      pokerState: 53,
      pokerHistory: 'local'
    }   
    }
},
watch: {
  bet: {
    handler(newValue, oldValue) {
      console.log(newValue)
    },
    deep: true
  }
}

tips: 只要bet中的屬性發(fā)生變化(可被監(jiān)測到的),便會執(zhí)行handler函數(shù);
如果想監(jiān)測具體的屬性變化,如pokerHistory變化時,才執(zhí)行handler函數(shù),則可以利用計算屬性computed做中間層。
事例如下:

4、對象的具體屬性watch(活用computed)

data() {
  return {
    bet: {
      pokerState: 53,
      pokerHistory: 'local'
    }   
    }
},
computed: {
  pokerHistory() {
    return this.bet.pokerHistory
  }
},
watch: {
  pokerHistory(newValue, oldValue) {
    console.log(newValue)
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • VUE介紹 Vue的特點構(gòu)建用戶界面,只關(guān)注View層簡單易學(xué),簡潔、輕量、快速漸進式框架 框架VS庫庫,是一封裝...
    多多醬_DuoDuo_閱讀 2,855評論 1 17
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,618評論 0 25
  • 一場雨過后,西北的風(fēng)開始變得清涼!還沒來得及穿的裙子,可以遺憾的告別這個季節(jié)了!南方的你們還在比著誰的裙擺更低,...
    立夏丫頭愛吃鴨閱讀 253評論 0 0
  • 今天休息一天本來說出去呢上午刮了特別大的風(fēng)就哪里也沒去注意了一上午到下午天氣好了就出去玩了玩轉(zhuǎn)了轉(zhuǎn)有時候適當?shù)姆潘?..
    AAAAA京心達張水尚閱讀 141評論 0 0

友情鏈接更多精彩內(nèi)容