SwiftUI中的UITableViewDataSourceRefetch

SwiftUI中的UITableViewDataSourceRefetch,swiftui,Swiftui,在UIKit中,我们有UITableViewDataSourcePrefetching() 我想在SwiftUI中做一些类似的事情,以显示大量数据,其中所有数据不能同时存储在内存中 我提出了一个解决方案,其中一个不可见的矩形有一个.onAppear回调,用于处理加载更多数据。问题是,这使得体验非常缓慢,因为数据实际上不是预取的,而是只有在到达表中的某个点时才加载 struct ContentView:View{ @ObjectBinding变量元素:[Int] var body:一些观点{ Fo

在UIKit中,我们有
UITableViewDataSourcePrefetching
()

我想在SwiftUI中做一些类似的事情,以显示大量数据,其中所有数据不能同时存储在内存中

我提出了一个解决方案,其中一个不可见的矩形有一个
.onAppear
回调,用于处理加载更多数据。问题是,这使得体验非常缓慢,因为数据实际上不是预取的,而是只有在到达表中的某个点时才加载

struct ContentView:View{
@ObjectBinding变量元素:[Int]
var body:一些观点{
ForEach(elements.identified(by:\.self)){中的元素
文本(“\(元素)”)
}
矩形(){
//添加更多数据
}
}
}
我希望能够在
ForEach
创建的早期元素上添加此
.onAppear
事件,以便在到达当前数据末尾之前实际获取数据


我想到的另一种选择是创建一个自定义集合,如果访问最后一个标记之一,它在其下标函数中加载更多数据。该解决方案的问题是,SwiftUI在最初加载
视图时访问所有标记。

您可以尝试在ForEach中使用索引,如下所示

ForEach(0..<store.repos.count) { index in
                if (self.store.repos.count - index < 10) {
                    RepoRow(repo: self.store.repos[index])
                        .onAppear(perform: self.fetchNextPage)
                } else {
                    RepoRow(repo: self.store.repos[index])
                }
            }
ForEach(0。。