SwiftUI || Che cos'è il wrapper della proprietà @State?
In SwiftUI, @Stateviene spesso utilizzato in una struttura per dichiarare una proprietà il cui valore può cambiare nel tempo e che può attivare il re-rendering della vista quando il valore viene aggiornato.
Quando dovremmo usare @state?
Dovremmo utilizzare il @Statewrapper di proprietà in SwiftUI ogni volta che abbiamo una proprietà che deve essere mutabile e le cui modifiche dovrebbero causare l'aggiornamento automatico della vista.
In altre parole, dovresti usare @Stateper le proprietà che fanno parte dello stato interno della vista e
possono cambiare nel tempo a seguito dell'interazione dell'utente o di altri eventi. Esempi di proprietà che potrebbero utilizzare @Stateinclude
- La scheda selezionata in una visualizzazione a schede
- L'attuale stato di avanzamento di un indicatore di caricamento
- Il testo in un campo di testo
- Lo stato di un interruttore o di un interruttore
- La pagina corrente in una visualizzazione di pagina
È importante notare che @Statedovrebbe essere utilizzato solo per le proprietà che fanno parte dello stato interno della vista. Se è necessario gestire lo stato condiviso tra più visualizzazioni o componenti, è necessario utilizzare altri wrapper di proprietà come @Binding, @ObservedObjecto @EnvironmentObject.
Facciamo un esempio
Quando dichiari una proprietà con il @Statewrapper della proprietà in uno struct, il valore di tale proprietà viene archiviato in una posizione di memoria separata all'esterno dello struct e lo struct ottiene un riferimento a tale valore. Ciò consente di eseguire nuovamente il rendering automatico della vista quando il valore della @Stateproprietà cambia, senza richiedere la reinizializzazione della vista.
Ecco un esempio di come @Statepuò essere utilizzato in una struttura in SwiftUI:
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("Increment Count") {
count += 1
}
}
}
}
Poiché abbiamo utilizzato il @Statewrapper di proprietà per dichiarare la countvariabile, qualsiasi modifica alla countvariabile attiverà il nuovo rendering della vista, che aggiornerà il valore visualizzato della Textvista.
Questo è un esempio di base di come @Statele proprietà possono essere utilizzate in SwiftUI. @StateLe proprietà sono molto utili per la gestione dello stato nelle applicazioni SwiftUI, in quanto ci consentono di creare viste dinamiche in grado di rispondere ai cambiamenti nei dati.
Un altro esempio di problema della vita reale
struct ContentView: View {
@State private var username: String = ""
@State private var password: String = ""
@State private var rememberMe: Bool = false
@State private var loginError: Bool = false
var body: some View {
VStack {
TextField("Username", text: $username)
.padding()
SecureField("Password", text: $password)
.padding()
Toggle("Remember Me", isOn: $rememberMe)
.padding()
Button("Log In") {
// Perform login logic here...
if username == "user" && password == "password" {
// Successful login
loginError = false
} else {
// Failed login
loginError = true
}
}
.alert(isPresented: $loginError) {
Alert(title: Text("Error"), message: Text("Invalid username or password"), dismissButton: .default(Text("OK")))
}
}
.padding()
}
}
Buona codifica !

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































