【发布时间】:2020-10-05 09:45:12
【问题描述】:
所以我已经阅读了很多关于 swiftUI 的内容,但我很困惑。我了解@State 以及它如何更新幕后视图。我无法理解的是为什么当我在顶视图/结构中的状态发生变化时自动更新此示例中的子视图,因为在子视图上 var subname 不是 @State 属性。我希望这不会被更新。有人可以请教我吗?
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。 如果我将子视图更改为
struct SubView: View {
@State var subName:String
var body: some View {
Text(subName)
}
}
当我按下按钮时它没有更新。
【问题讨论】: