Junior — Middle
È possibile evitare l'uso di StateObject in determinati scenari?
sobes.tech AI
Risposta dell'AI
Sì, in alcuni scenari è possibile evitare l'uso di @StateObject.
@StateObject è progettato per creare e memorizzare un oggetto ObservableObject all’interno di una View, in modo che persista durante i ri-rendering. Se l’oggetto viene creato e gestito fuori dalla View (ad esempio, nel componente genitore o tramite Dependency Injection), le View figlie possono usare @ObservedObject o @EnvironmentObject per accedere a quell’oggetto senza doverlo ricreare.
Esempio:
class Model: ObservableObject {
@Published var value = 0
}
struct ParentView: View {
@StateObject private var model = Model()
var body: some View {
ChildView(model: model)
}
}
struct ChildView: View {
@ObservedObject var model: Model
var body: some View {
Text("Valore: \(model.value)")
}
}
Qui, @StateObject viene usato solo nella View genitore, e la View figlia ottiene il riferimento tramite @ObservedObject. In questo modo, se l’oggetto viene creato fuori dalla View o passato dall’alto, @StateObject non è obbligatorio.