React : comment afficher une liste de 10 000 éléments sans ramer ?
poze 2 months ago550 gadefr
7
J'affiche un tableau de 10 000 lignes. Le scroll est saccadé et le premier rendu prend plusieurs secondes.
Dyagnostik IA
Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.
poze 2 months ago
Nadège Paul 1.5k
1 Repons
7
✓✓ Repons yo aksepte
Il faut virtualiser la liste : ne rendre que les ~30 lignes visibles, plus une petite marge. @tanstack/react-virtual est la référence actuelle :
const parentRef = useRef<HTMLDivElement>(null);
const v = useVirtualizer({
count: rows.length,
getScrollElement: () => parentRef.current,
estimateSize: () => 36,
});
return (
<div ref={parentRef} style={{ height: 600, overflow: 'auto' }}>
<div style={{ height: v.getTotalSize(), position: 'relative' }}>
{v.getVirtualItems().map(item => (
<div key={item.key} style={{ position: 'absolute', top: item.start, height: item.size, width: '100%' }}>
{rows[item.index].name}
</div>
))}
</div>
</div>
);
Pose-toi aussi la question produit : un utilisateur lit-il vraiment 10 000 lignes ? La pagination ou la recherche côté serveur est souvent la meilleure solution.
Konekte pou di lòt moun si li te mache.
answered 2 months ago
Samuel Joseph 2.7k
Sign in and verify your email to post an answer.