Menu
CoddyTech

Thuộc tính @State

Thuộc phần Giới thiệu về SwiftUI trong hành trình Swift của Coddy. Bài học 20 trên 50.

Nội dung của một view được tính toán lại dựa trên dữ liệu của nó. Để có dữ liệu có thể thay đổi, hãy đánh dấu một thuộc tính bằng @State. Khi thuộc tính trạng thái thay đổi, SwiftUI chạy lại body và cập nhật màn hình:

struct ContentView: View {
    @State private var count = 0

    var body: some View {
        VStack {
            Text("Count: \(count)")
            Button("Add one") {
                count += 1
            }
        }
    }
}

Mỗi lần chạm sẽ chạy count += 1, và văn bản hiển thị số mới. Bạn không cần tự cập nhật văn bản: văn bản được mô tả dựa trên count, nên nó luôn theo giá trị của biến này.

Không thể thay đổi một var thông thường trong view từ phần thân của nó, vì view là các struct. @State lưu giá trị bên ngoài struct để giá trị vẫn được giữ nguyên sau mỗi lần vẽ lại. Đánh dấu state là private: state thuộc về view này.

challenge icon

Thử thách

Dễ

Hoàn thành bộ đếm lượt nhấn. Hành động của nút đang để trống: hãy tăng taps thêm 1 sau mỗi lần nhấn, để dòng chữ hiển thị Taps: 1 sau một lần nhấn và Taps: 2 sau hai lần.

Tự làm thử

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Giới thiệu về SwiftUI

Tự luyện tập: Playground SwiftUI