Sobes.tech
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.