View là giá trị, không phải đối tượng
Một view trong SwiftUI là một struct mô tả những gì cần có trên màn hình ứng với trạng thái hiện
tại. Nó không phải thứ bạn giữ lấy rồi sửa — nó được tạo ra, đọc, rồi vứt đi, nhiều lần trong một
giây.
struct Counter: View {
@State private var count = 0
var body: some View {
Button("Đã bấm \(count) lần") { count += 1 }
}
}
Counter được tạo lại mỗi lần trạng thái đổi. Nghe thì tốn kém nhưng không: struct chỉ vài byte, và
SwiftUI so bản mô tả mới với bản cũ để quyết định thứ gì thật sự cần vẽ lại.
Mẹo
Cú xoay chuyển tư duy làm mọi thứ còn lại sáng ra: bạn không bao giờ bảo SwiftUI cập nhật. Bạn đổi trạng thái, còn view là một hàm của trạng thái đó. Bất cứ lúc nào bạn thấy mình muốn “làm tươi lại view”, nghĩa là mô hình trạng thái đang sai.
Đây là chương mẫu. Phần nội dung đầy đủ vẫn đang được viết.