aşağıdaki rowHasChanged
ile, (Whatsapp/Facebook Messenger benzer) sohbet oturumları listesini görüntüleyen bir ListView
var:ListView sıralama performansı nasıl kullanılır?
rowHasChanged: (r1, r2) => r1.id !== r2.id
Ben güncellenmektedir almayan öğelerin yeniden render alıyorsanız fark, hatta shouldComponentUpdate
kullanırsam.
Bazı bulgular olduktan sonra, dataSource'u klonlamaya başlamadan önce öğeleri farklı şekilde sıraladığımdan (yeni ileti, öğeler listenin en üstüne atlar), rowHasChanged
farklı satırları karşılaştırıyor. Bunu yapması mantıklı.
Ancak, bir sıralamada sıralamayı desteklemek için bir çözüm yok mu? WPF'de, something to sort by no'lu CollectionViewSource
no'lu veriye ek olarak, aynı sorundan dolayı verilere ek olarak (aynı zamanda desteklenen filtreleme ve diğerleri).
Bu gereksiz işleyicilerinden kurtulmanın bir yolu var mı?
ListViewDataSource, değişmez verileri kullanır, bu yüzden bir "ListView" kullanılarak mümkün olacağını düşünmüyorum. Ancak, "removeClippedSubviews" etkinse, çok fazla satır oluşturması gerektiği görünmüyor. Bunu denedin mi? –
@GarrettMcCullough Sorun, değişmez veriler veya çok fazla satır oluşturma ile ilgili değil. Bu, bir satırın konumunu değiştirdiğinde, diğer tüm satırların benim verilerimde konumlarını değiştirmesine neden olur, bu da ListView'in farklı satırları birbiriyle karşılaştırması nedeniyle TÜM satırların değiştirilen satırlar olarak sayılmasına neden olur. –
Moti, yorumum, değişmez bir veri nesnesi kullandığınız için, sıranın önüne yeni bir kaydın itildiğini * belirtiyordu. * Veri yapısını değiştiriyor ve bu nedenle her satırın yeniden oluşturulmasını gerektiriyor. veri yapısı artık farklı. Ancak, "removeClippedSubviews" özelliği açıksa, tüm satırları yeniden oluşturduğunuzun önemi yoktur, çünkü yalnızca görünen satırları (her iki tarafa da birkaç tane ekstra) yeniden oluşturacaksınız. bir performans sorununa neden olmamalıdır. ListView alternatiflerinden bazılarına da bakabilirsiniz. –