在小程序開發過程中,我們通過 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