微信小程序里的數據怎么看?如何檢測小程序數據變化(2)
2020-05-27 17:09 互聯(lián)網(wǎng)
聲明了一個(gè)變量來(lái)保存所有在變化時(shí)需要執行的函數,在 set 時(shí)執行每一個(gè)函數,因為此時(shí) this.data.test 的值還未改變,使用 setTimeout 在下一輪再執行,F在就有一個(gè)問(wèn)題,怎么將函數添加到 subs 中。不知道各位還是否記得上面我們說(shuō)到的在 reduce 里的那兩行代碼。因為在執行計算 test1 和 test2 第一次 computed 值的時(shí)候,會(huì )調用 test 的 getter 方法,此刻就是一個(gè)好機會(huì )將函數注入到 subs 中,在 data 上聲明一個(gè) $target 變量,并將需要執行的函數賦值給該變量,這樣在 getter 中就可以判斷 data 上有無(wú) target 值,從而就可以 push 進(jìn) subs,要注意的是需要馬上將 target 設為 null,
到此為止已經(jīng)實(shí)現了 watch 和 computed,但是還沒(méi)完,有個(gè)問(wèn)題。當同時(shí)使用這兩者的時(shí)候,watch 里的對象的鍵也同時(shí)存在于 data 中,這樣就會(huì )重復在該變量上調用 Object.defineProperty ,后面會(huì )覆蓋前面。因為這里不像 vue 里可以決定兩者的調用順序,因此我們推薦先寫(xiě) computed 再寫(xiě) watch,這樣可以 watch computed 里的值。
在云里,為各行業(yè)商戶(hù)搭建自己的小程序。微信號:zaiyunli002