記一次wepy里面的渲染問題(this.$apply()的使用)


今天在用wepy搞小程序的時候遇到了一個小坑,卡了我好一會,因為之前在做React,所以對wepy的了解不是特別深入,所以導致了這個問題的發生

先貼上來關鍵代碼讓大家看一看(備注之處是問題解決的方法)

效果:

我們可以看到剛進來時整個頁面都沒數據,但我點別的選項之后數據又會出來

why?當時我真的是滿臉懵逼啊,數據也獲取到了就是第一次不渲染,給我急得差點把自己的頭發都薅干凈了

經過我一番調試,發現他奶奶的checkStep里面的賦值附近有問題,當時我腦子一熱把賦值改成了用setData()結果一點效果沒有,用this.itemchecked賦值還是第一次不出來,

在我即將把頭發薅干凈之際,我的大腿過來幫我看了一眼,輕飄飄的來了句你缺了this.$apply(),我日,我趕緊試了試,還真是

!!!!!一切正常

那為啥需要調用this.$apply()呢,

可以看到methods里面的方法被bindtap調用之后觸發了頁面渲染,而當我在onLoad()里面調用時卻沒有觸發頁面渲染

經過我一番搜索和查證得到以下結果:

使用wepy框架寫小程序,data賦值這里不需要使用this.setData({}),例如:data:{x:''1"},

比如data里面你定義了一個x='',然后你在自定義的方法里面用this.x=200 之后,需要用this.$apply()來進行數據綁定。這樣你在view中綁定data中的x變量時,才會有200,不然就是空

(特別注意:)

不過有個前提,method里面的方法是不用這個的,但methods里面只能放bindtap這類方法,所以你自己定義的其他方法,或者寫在onshow里面,就必須得用this.$apply()。

 

this.$apply()使用場景:

  1.異步更新數據

  2.手動刷新DOM

 

哈哈哈,有一個小坑被我踩過了,美滋滋!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM