为什么在视图未更新时使用@State var

时间:2020-09-17 14:54:15

标签: swift swiftui

我对@State变量的理解是,只要状态在View中发生变化,我们就需要使用@State变量。但是,请考虑以下示例:

struct ContentView: View {
    @State private var image: Image?

    var body: some View {
        VStack {
            image?
                .resizable()
                .scaledToFit()
        }
        .onAppear(perform: loadImage)
    }

    func loadImage() {
        image = Image("Example.png")
    }
}

据我所知,我没有通过拨动开关或按钮等来更改任何View。那么为什么要使用@State变量?我们为什么不能只写:private var image: Image?

1 个答案:

答案 0 :(得分:1)

如果映像为零,则VStack将包含EmptyView()。从这种意义上说,您的观点已经改变。

考虑一下:在调用loadImage之前,图像为nil并且视图已经初始化!