Vue:組件的雙向綁定,watch監(jiān)聽 props 時失效

1. 組件的雙向綁定

  • 組件外部用 v-model 綁定
  • 組件內部用 value 接收
  • 組件內部監(jiān)聽 value 和副本 currentValue,在 currentValue 發(fā)生變化的時候廣播 input 事件,即可達到雙向綁定的效果
watch: {
  value() {
    this.currentValue = this.value
  },
  currentValue(val) {
    this.$emit("input",val);
  },
},

2. 在組件中監(jiān)聽 prop 失效
解決辦法:寫成下面這種形式,使用 immediate 屬性。

watch: {
  loading: {
    immediate: true,
    handler(val){
      if(val){
        this.currentDisabled = true
      }
    },
  },
},

原因:因為 watch 的一個特點是,最初綁定的時候是不會執(zhí)行的,當 loading 值改變時才進行監(jiān)聽計算。而immediate: true 代表如果在 wacth 里聲明了 loading 之后,就會立即先去執(zhí)行里面的 handler 方法,如果為 false就跟我們以前的效果一樣,不會在綁定的時候就執(zhí)行。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容