可能是最快的前端下拉重新整理元件

2022-09-22 04:39:10 字數 1253 閱讀 1559

成楠peter​​

位元組跳動 前端工程師

​關注他

10 人贊同了該文章

最近開源了乙個下拉重新整理和上拉載入更多的元件,react-fast-scroll,聽名字就就知道是基於react的元件,可能是react最快的下拉重新整理元件。這個元件也支援vue,angular,原生js等框架,需要擴充套件。

專案基本完成,現在缺demo展示,測試用例,這些逐步完善。如果有同學敢興趣,歡迎 pr 和使用。

簡單分析一下下拉元件

我去年用過 better-scroll,也用過react的虛擬列表 react-virtualized,兩者都是非常好的滾動元件,支援的功能也非常多。但是在列表資料較多,或者滑動較快,並沒有原生滾動表現好。

better-scroll 使用 transform 模擬滾動行為,但是在滾動的時候會一直觸發重排,好像是要獲取dom的一些屬性才能計算,而且無法規避,所以大列表的情況下,掉幀比較厲害。

react-virtualized 建立乙個固定的滾動區域,只需要可視的資料,減少了元件渲染,重排重繪時間,並且減少了dom的節點。但是缺點也很明顯,滾動稍微快一點就會出現空白。

react-fast-scroll 是基於原生 scroll 事件,並且支援將滾動事件繫結到 window 上,這樣可以減少事件捕獲和冒泡時間,並且 window 上的滾動事件,瀏覽器是有優化機制的。原生 scroll 還可以開啟passive: true,避免瀏覽器監聽 scroll 攔截事件(e.preventdefault),也有 10% - 20% 的優化。對於長列表並且有大量,可以通過監聽 intersectionobserver api(非同步api),當離開可視區,移除dom,這樣繪製整個列表的時候,合成的壓力會小非常多。對於列表無限增長的問題,可以採用資料切割的方式,資料保留在記憶體中,dom移除,比如當載入到1000條資料時,清除前200條資料,滾回去的時候再還原,但是這個過程必須是同步的,否則會因為滾動過快,導致資料未還原,這個理念和 react-virtualized 相似。

下面是 intersectionobserver 的介紹。

發布於 2020-07-26 20:49

差異可能是重要的

3位可儲存8個值。n位可儲存2 n值。因為乙個位元組的8位,乙個位元組可以存放2 8 256 的值。變數的大小對大量的資訊可以儲存 這是更大的變數可以容納更多的限制。我們將進一步解決這個問題的時候,我們進入不同型別的變數。第二,電腦有乙個有限的可用記憶體。每一次我們宣告乙個變數,那游離的記憶是只要用...

你可能是自由的

序 一直都愛吃甜,甜到微微的澀。一直都想寫作,寫到天昏地暗。一直追逐自由,飛到天涯海角。孤獨的牧羊人在廣廖的草原牧著他的羊兒們,一生孤獨的他在3歲那年,父母已離開人世,剩下相依為命的奶奶也在10歲時離他而去,留下的只有兩頭羊兒。那一年,他哭的是那麼傷心,周圍嬉皮笑臉的人帶著乙個悲傷的面具,假惺惺的來...

這可能是不可取的!

雖然消極期望功能的一部分,我們給它乙個整數而不是。然而,由於分數具有建構函式的願意接受乙個整數,編譯器將使用此建構函式隱式轉換為整數6轉化為分數的物件,然後將其複製到makenegative 初始化引數f.因此,上面的程式列印 6 1 這種隱式轉換為各種初始化 直接 統一和複製 用於隱式會話的建構函...