小程序 數據監聽(observers),避免賦值死循環

在小程序開發過程中,我們通過 observers 監聽處理 properties 組件數學列表的過程中,免不了對 當前數據進行處理
在我們對監聽的數據進行賦值時候,會造成死循環,其實這個問題在大多數框架中都有這個問題。

  • 小栗子🌰[錯誤示範]
   properties: {
    playlist: {
      type: Object
    }
  },
  // 數據監聽
  observers: {
    ['playlist.playCount'] (count) {
      this.setData({
        ['playlist.playCount']: this._tranNumber(count, 2)
      })
    }
  },
  • 小栗子🌰[正確示範]

data: {

  // 數據監聽
  observers: {
    ['playlist.playCount'] (count) {
      this.setData({
        _count: this._tranNumber(count, 2)
      })
    }
  },
    // 避免監聽器 賦值死循環
    _count: 0
  },
  • 原因就是 playlist.playCount 這 個數據是監聽狀態 如果 playlist.playCount 改變就會觸發這個方法,如果在setData 中給原數據賦值 他就會不斷的觸發這個方法,從而導致死循環

  • 所以解決方案就是 在組件 data 中定義一個 變量 接受這個新的值,然後在頁面中使用 data中的值 在這裏也就是 _count

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章