如果 LazyVStack 在 VStack 内部,它会保持"lazy"吗?



让我们考虑一个包含100个帖子的列表。根据Apple的说法,如果我将它们布局在LazyVStack:

堆栈视图不创建项目,直到它需要呈现它们屏幕上。

如果我把LazyVStack嵌入到VStack中会怎么样?它是否仍然"按需"加载视图?

struct MyView: View {
init() {
print("init...")
}

var body: some View {
Text("test")
}
}
struct ContentView: View {
var body: some View {
ScrollView {
VStack {
LazyVStack {
ForEach.init(0..<100) { int in
MyView()
}
}
}
}
}
}

运行上面的代码,当我们滚动时,我们可以看到更多的MyView被初始化(通过查看控制台上的打印语句),所以看起来VStack中的LazyVStack确实懒惰地创建了它的内容。我们可以看到,当删除VStack时也是如此。

最新更新