gpt4 book ai didi

SwiftUI List 更新缓慢

转载 作者:行者123 更新时间:2023-12-04 03:43:44 26 4
gpt4 key购买 nike

我有一个 SwiftUI列表,其中包含数千个项目。每个项目都是这样的:

class Item: Codable, Identifiable {
var id = UUID()
var prop1 = ""
var prop2 = ""
}
现在我这样做:
List(store.items.indices, id: \.self) { index in
DetailView(item: self.$store.items[index])
}.id(UUID())
我迭代 indicies因为我必须通过 BindingDetailView .
现在 DetailViewTextFields附于 Item的属性。
DetailView更改 Item的属性,它会导致 List刷新 全部 的项目,我不想要。
此外,当这些属性之一发生更改时,主视图会更新仍然很重要,因为在 macOS 上,即使单击其中一项,主视图仍然可见。
我的问题是如何做到这一点,以便每当 ItemList 传入更改,仅更新该行?
我还尝试了使用 LazyVStack 的解决方案。 ,它修复了性能问题,但我使用 List NavigationView 的内部,以及 LazyVStack似乎不支持这一点。
非常感谢任何建议。

最佳答案

删除 .id(UUID())从列表中。
默认情况下,List diffs 更改并仅更新受影响的行。对于非常大的数据集,.id(UUID())技巧用于在发生变化时强制重新加载整个列表,这可能比尝试区分大型数据集更快。听起来你不需要它,所以不必要地包含它实际上更糟糕。
编辑:我不认为通过索引绑定(bind)到数组是问题,但它是不寻常的,最终可能会咬你。

关于SwiftUI List 更新缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65515642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com