小编典典

SwiftUI`@ State`关键字有什么作用?

swift

SwiftUI教程使用@State关键字来表示可变UI状态:

@State var showFavoritesOnly = false

它提供了以下摘要:

状态是一个值或一组值,可以随时间变化,并影响视图的行为,内容或布局。您可以将属性与@State属性一起使用,以将状态添加到视图中。

  • 关键字的确切含义是什么?
  • 变异@State变量如何导致视图重新计算?
  • 其他变量在body吸气剂中如何不变?

阅读 653

收藏
2020-07-07

共1个答案

小编典典

@State关键字是@propertyWrapper,最近刚刚在雨燕5.1中引入的功能。如相应提案中所述,它有点像是值包装器,可避免样板代码。


旁注:@propertyWrapper以前称为@propertyDelegate,但此后发生了变化


官员@state文档具有以下的说:

SwiftUI 管理 您声明为状态的任何属性 的存储当状态值更改时,视图将使其外观无效并重新计算body
。将状态用作给定视图的唯一事实来源。

State实例不是值本身;它不是值本身。 这是读取和修改值的一种方法。要访问状态的基础值,请使用其value属性。

因此,当您初始化标记为的属性时@State,您实际上并不是在创建自己的变量,而是提示在后台SwiftUI创建 “东西”
来存储您设置的内容并从现在开始对其进行监视!您@State var只是充当 访问此包装器委托

每次您的@State变量被 写入时SwiftUI就会知道它正在监视它。它也将知道是否@State变量被 读出
Viewbody。使用此信息,它将能够 重新计算View@Statebody对该变量进行更改后已在其变量中引用
任何 变量。

2020-07-07