让我们考虑一个包含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
时也是如此。