SwiftUI onDisappear 未被调用

SwiftUI onDisappear not being called

我正在使用 ScrollViewVStack 在列表中显示一堆视图。但由于某种原因 onDisappear 没有被调用,onAppear 被调用了。

onDisappear 是否仅在该视图从屏幕上消失时才调用?或者当它被取消初始化时

struct AView: View {
        
    var body: some View {
        ScrollView(.vertical, showsIndicators: false) {
            VStack {
                ForEach(0...99, id: \.self) { _ in
                    SomeView()
                        .onDisappear {
                            print("Disappeared")
                        }
                }
            }
        }
    }
}

当您使用 VStack 时,它会在里面绘制所有视图 - 所有视图都被添加到视图树中,无论在屏幕上是否可见都没有关系。

如果您将其替换为 LazyVStack,它会使内容变懒——只有可见的视图会添加到视图树中,并且 onDisappear 会按您预期的那样被调用。