@State 属性
本课属于 Coddy Swift 学习旅程的“SwiftUI 入门”单元。第 20 课,共 50 课。
视图的 body 会根据它的数据重新计算。若要使用会变化的数据,请用 @State 标记属性。状态属性变化时,SwiftUI 会再次运行 body 并更新屏幕:
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("Add one") {
count += 1
}
}
}
}每次点击都会运行 count += 1,文本会显示新的数字。你不需要自己更新文本:文本是根据 count 描述的,所以会随着值变化。
视图中的普通 var 无法在视图主体中更改,因为视图是结构体。@State 会将值存储在结构体之外,这样每次重绘时值都会保留。将状态标记为 private:它属于此视图。
挑战
简单完成点击计数器。按钮的操作目前是空的:让每次点击都给 taps 加上 1,这样点击一次后文本会显示 Taps: 1,点击两次后会显示 Taps: 2。
亲手试试
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
SwiftUI 入门中的所有课
自己练习: SwiftUI 在线编辑器