我是做了個新聞緩存:
注意對比紅綠色:
綠色:之前直接往對象塞,
紅色:就是因為這個!坑跨過去了。
吧請求的數據傳遞給組件渲染
組件接受到,監聽器監聽到復賦值然后渲染:
回頭看:
如果綠色的話,邏輯是通的,但是! 監聽器深度監聽的時候不會監聽到你長度發生改變!即使你有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強制重新渲染組件,從而達到更新目的。