@State - это
property wrapper (обертка свойства), которая позволяет хранить и отслеживать изменяемые данные внутри
View. Когда значение
@State меняется,
SwiftUI автоматически перерисовывает представление, чтобы отразить обновленные данные.
Особенности:
- Для простых значений: используется для примитивов (Int, String, Bool) и структур (Struct).
- Локальное хранение: данные живут только внутри этой View и не предназначены для передачи в другие экраны.
- Автоматическое обновление: при изменении значения SwiftUI пересоздает View (но сохраняет состояние).
Пример:
struct MyView: View {
@State private var value = 0 // Значение, которое может меняться
var body: some View {
Button("Нажато: \(value)") {
value += 1 // Изменение @State перерисует кнопку
}
}
}
Когда использовать:
- Для внутреннего состояния View (чекбоксы, текст поля, флаги).
- Если данные не нужно передавать в другие View (иначе используйте @Binding или @ObservedObject).
Важно:
- Всегда помечайте @State как private.
- Не используйте для сложных объектов (для этого есть @StateObject).
@State - это основа реактивности в
SwiftUI!