该@State
关键字是@propertyWrapper
,最近刚刚在雨燕5.1中引入的功能。如相应提案中所述,它有点像是值包装器,可避免样板代码。
旁注:@propertyWrapper
以前称为@propertyDelegate
,但此后发生了变化
该官员@state文档具有以下的说:
SwiftUI
您声明为状态的任何属性 。 。将状态用作给定视图的唯一事实来源。
。要访问状态的基础值,请使用其value属性。
因此,当您初始化标记为的属性时@State
,您实际上并不是在创建自己的变量,而是提示在后台SwiftUI
创建 “东西” 来存储您设置的内容并从现在开始对其进行监视!您@State var
只是充当 的 。
每次您的@State
变量被 ,SwiftUI
就会知道它正在监视它。它也将知道是否@State
变量被 从View
的body
。使用此信息,它将能够 @State
在body
对该变量进行更改后已在其变量中引用 变量。