我对@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?
答案 0 :(得分:1)
如果映像为零,则VStack将包含EmptyView()
。从这种意义上说,您的观点已经改变。
考虑一下:在调用loadImage
之前,图像为nil并且视图已经初始化!