Arkadaşlar merhaba, son zamanlarda üzerinde çalıştığım bir projede kullanıcı arayüzünde oldukça karmaşık tablolarla uğraşıyorum. Özellikle iç içe geçmiş satırlar, dinamik sütun yapıları ve hücre içinde render edilen farklı bileşenler (dropdown, input, toggle vs.) performansı ciddi anlamda etkilemeye başladı. 1000 satır civarında veriyle çalıştığımda sayfa donma noktasına geliyor, scroll yapmak bile işkence haline dönüyor. Virtual scroll ve lazy loading gibi yöntemleri denedim ama tablo içinde hücre bazında update gerektiğinde yine takılmalar oluyor.
Bu noktada en büyük sorunum, her hücrenin kendi state'ini yönetmesi ve bu state değişikliklerinin tüm tabloyu re-render etmesi. Mesela bir checkbox'ı işaretlediğimde bütün satırlar yeniden çiziliyor, bu da özellikle büyük veri setlerinde can sıkıcı. React kullanıyorum, useMemo ve useCallback ile bir nebze iyileştirme yaptım ama yeterli değil. Belki de yanlış bir mimari kuruyorum, sizler bu tür durumlarda hangi optimizasyon tekniklerini tercih ediyorsunuz? Özellikle hücre bazında bağımsız render sağlamak için ne gibi yöntemler kullanıyorsunuz?
Ayrıca tablo içinde sıralama, filtreleme ve grup bazlı toplamalar da ekleyince iş iyice karışıyor. Şu an için tüm bu işlemleri frontend tarafında yapıyorum, backend'de sayfalama ile çözmeyi düşünmüyorum çünkü kullanıcı tüm veriyi aynı anda görmek istiyor. Sizce bu yaklaşımım yanlış mı? Yoksa tüm veriyi client'ta tutup, değişiklikleri lokal state'te yönetmek daha mı sağlıklı? Tecrübelerinizi paylaşırsanız çok sevinirim, gerçekten ince bir çizgide gidiyorum ve doğru yolu bulmakta zorlanıyorum.
Bu noktada en büyük sorunum, her hücrenin kendi state'ini yönetmesi ve bu state değişikliklerinin tüm tabloyu re-render etmesi. Mesela bir checkbox'ı işaretlediğimde bütün satırlar yeniden çiziliyor, bu da özellikle büyük veri setlerinde can sıkıcı. React kullanıyorum, useMemo ve useCallback ile bir nebze iyileştirme yaptım ama yeterli değil. Belki de yanlış bir mimari kuruyorum, sizler bu tür durumlarda hangi optimizasyon tekniklerini tercih ediyorsunuz? Özellikle hücre bazında bağımsız render sağlamak için ne gibi yöntemler kullanıyorsunuz?
Ayrıca tablo içinde sıralama, filtreleme ve grup bazlı toplamalar da ekleyince iş iyice karışıyor. Şu an için tüm bu işlemleri frontend tarafında yapıyorum, backend'de sayfalama ile çözmeyi düşünmüyorum çünkü kullanıcı tüm veriyi aynı anda görmek istiyor. Sizce bu yaklaşımım yanlış mı? Yoksa tüm veriyi client'ta tutup, değişiklikleri lokal state'te yönetmek daha mı sağlıklı? Tecrübelerinizi paylaşırsanız çok sevinirim, gerçekten ince bir çizgide gidiyorum ve doğru yolu bulmakta zorlanıyorum.