So I have read a lot about swiftUI and I am confused. I understand the @State and how it update the view behind the scenes. The thing I can't understand is why when I the subview in this example is automatically updated when the state changes in the top view/struct given the fact that on the subview the var subname is not a @State property. I would expect this not to be updated. Can someone enlighten me please?
import SwiftUI
struct SwiftUIView: View {
@State private var name = "George"
var body: some View {
VStack{
SubView(subName: name).foregroundColor(.red)
Button(action: {
self.name = "George2"
}) {
Text("Change view name")
}
}
}
}
struct SubView: View {
var subName:String
var body: some View {
Text(subName)
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView()
}
}
PS. If I change the subview to
struct SubView: View {
@State var subName:String
var body: some View {
Text(subName)
}
}
it's not updated when I press the button.