我試圖綁定AutoSizer和Masonry組件反應虛擬化。我的項目列表處於狀態,並在componentDidMount()中異步顯示。如果我使用簡單的匿名箭頭函數渲染砌體,一切都可以。但是,如果我使用「renderMasonry」之類的單獨函數,那麼在調整窗口大小並觸發重新渲染之前,我會得到一個空的結果。我不明白爲什麼AutoSizer在這種情況下不會重新渲染。 Plunkr is here https://plnkr.co/edit/fmAqp1MOzlKGP96LeDjP
React虛擬化AutoSizer +砌體不會渲染,直到調整大小
0
A
回答
1
如果我使用簡單的匿名箭頭函數渲染砌體,一切都可以。但是如果我使用像「renderMasonry」這樣的單獨功能...
這是關鍵。每次都會重新創建一個匿名函數,因此AutoSizer
的shouldComponentUpdate
會看到一個新值並返回true而不是false。 (靠近反應虛擬化文檔的頂部,有是一個的與此相關的一個section titled "Pure Components"。)
在這種情況下,唯一的2個屬性被傳遞到AutoSizer
disableHeight
是和children
。如果這兩者在渲染之間都沒有變化,那麼AutoSizer
本身會認爲跳過重新渲染是安全的。
現在回想起來,我不知道這是一個很好的主意,有AutoSizer
擴展PureComponent
,因爲成本重新渲染它小巧混淆的可能性是很大的。話雖如此,人們常常將內聯函數用作反應虛擬化組件的子項,這樣可以避免上述問題。
相關問題
- 1. 反應 - 虛擬化Autosizer高度問題
- 2. 砌體容器調整大小
- 3. MobLayout中的Lobobrowser HtmlPanel直到調整大小後才渲染
- 4. 砌體插件:調整大小div不會導致洗牌
- 5. 砌體調整大小問題
- 6. jQuery砌體。更新columnWidth調整大小
- 7. 砌體不能正確顯示圖像,直到多次調整大小
- 8. React同構渲染 - 處理窗口大小調整事件
- 9. QGLWidget渲染區域不會調整大小
- 10. Chart.js不會渲染使用vue.js直到調整窗口
- 11. React SetState不會調用渲染
- 12. Android 4.4虛擬設備內部存儲不會調整大小
- 13. 滾動條不會加載或調整大小,直到屏幕調整大小
- 14. 虛擬基本全屏調整大小
- 15. jQuery砌體渲染「行塊」而不是擬合元素
- 16. 砌體磚堆疊在一起,直到Wordpress上的頁面大小調整
- 17. 調整大小後不調用LibGDX渲染
- 18. 字體真棒不會調整大小
- 19. JMenu不會出現,直到我最小化或調整JFrame的大小
- 20. 當horizontalList調整大小時調整項目渲染器
- 21. 使渲染方法虛擬?
- 22. 窗體大小調整和最大化
- 23. 幫助jquery /砌體,小調整
- 24. 砌體運行遲了頁面渲染
- 25. 垂直和調整大小
- 26. ExtJS 4 - 調整大小後調整大小後調整大小的內部組件不會調整大小resizeHandles
- 27. ColumnDefinition不會擴展,直到調整大小
- 28. Java:圖像不會顯示,直到我調整窗口大小
- 29. JSwing組件不會出現,直到框架調整大小
- 30. 做show()不會讓gui更新,直到調整大小窗口
非常感謝您的詳細解答! – 112358dev