我上個(gè)月面試被問(wèn)到了[酷拽]!后面我查了一下,總結(jié)有三種辦法:1,虛擬列表:不渲染所有數(shù)據(jù),只渲染可視區(qū)域的數(shù)據(jù)。當(dāng)用戶滑動(dòng)時(shí),通過(guò)監(jiān)聽(tīng)scroll來(lái)判斷是上劃還是下拉,從而更新數(shù)據(jù)。(可以了解下IntersectionObserver這個(gè)API)
2,延遲渲染:開(kāi)始不加載所有數(shù)據(jù),只渲染可視區(qū)域的數(shù)據(jù)(同虛擬列表)。當(dāng)滾動(dòng)到頁(yè)面底部時(shí),添加(concat),視圖渲染新增DOM
3,時(shí)間分片:就是把數(shù)據(jù)分割,定時(shí)去異步加載!我一開(kāi)始想的是用setTimeout去分割加載。但它存在弊端,快速下拉會(huì)出現(xiàn)閃屏現(xiàn)象!后來(lái)網(wǎng)上看到這個(gè)API。requestAnimationFrame你可以了解下!
因?yàn)槭智茫c(diǎn)到為止!所有問(wèn)題,請(qǐng)海涵!