uniapp 踩坑一個月 ,vue 監聽器 監聽對象失效問題


我是做了個新聞緩存:

 

 

 

 

 

 注意對比紅綠色:

 

 

 

綠色:之前直接往對象塞,

紅色:就是因為這個!坑跨過去了。

 

 

 吧請求的數據傳遞給組件渲染

 

 

 組件接受到,監聽器監聽到復賦值然后渲染:

 

 

 

 

 

 


 

回頭看:

 

 如果綠色的話,邏輯是通的,但是! 監聽器深度監聽的時候不會監聽到你長度發生改變!即使你有deep深度監聽【也能說錯,如果錯!請指正!】,這個問題苦苦困擾了我好久好久  ,搞得我直接吧緩存干掉,今天早上我又回去優化,重新構建代碼,

最后一個早上也沒成功,翻閱了好多資料【自己Vue基礎不扎實】,發現了一句話:

如果在實例創建之后添加新的屬性到實例上,它不會觸發視圖更新。

 

 

那么!我就知道了,為什么監聽器只監聽到一次,后面長度、值變化他都不管了,因為 即使你對象發生變化也好,Vue還是沒有  時實 的傳遞給   “新聞容器組件”   ,那么:

用$set即可,用了他就會更新響應式達到時實效果。

 

有錯誤球球指正!!!!!千萬!!!!!一起交流一起學習!

完.

 

 

2022年7月12日 15:02:44

其實解決這個很簡單,也不用用到this.$set

數組他不是不會事實更新,因為我是點擊了選項,然后去加載數據,數據回來了渲染,恰好渲染的太快,數據加載太慢,造成的,所以我們可以:

寫法:

加上等待框,讓等待框轉,這時候渲染的是等待框,到時候你數據回來了,你再去渲染數據,那就完美解決。

其實早就解決了,一直找不回來這個博客,現在找到了,就順便寫下。

 

 

 2022年10月15日 13:57:27:參考別人總結的方法,隨便看到記錄一下

問題:

1)因為父組件有緩存等因素,子組件創建后沒有釋放,傳入參數無效

2)父組件的tab切換, 導致子組件一直存在, 沒有刷新

 

解決方法:

方案一: 只要讓子組件強制刷新就可以獲取到props傳遞過來的值了, 使用v-if的特性(銷毀和重建)可以強制刷新子組件

如果是刷新某個子組件,則可以通過v-if指令實現。我們知道,當v-if的值發生變化時,組件都會被重新渲染一遍。因此,利用v-if指令的特性,可以達到強制刷新組件的目的。


方案二: 使用this.$forceUpdate強制重新渲染

如果要在組件內部中進行強制刷新,則可以調用this.forceUpdate強制重新渲染組件,從而達到更新目的。


免責聲明!

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



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