Sobes.tech
Junior — Middle

Is het mogelijk om in bepaalde scenario's zonder het gebruik van StateObject te werken?

sobes.tech AI

Antwoord van AI

Ja, in sommige scenario's is het mogelijk om zonder @StateObject te werken.

@StateObject is bedoeld om een ObservableObject binnen een View te creëren en op te slaan, zodat het bewaard blijft tijdens her-renderingen. Als het object buiten de View wordt gemaakt en beheerd (bijvoorbeeld in een oudercomponent of via Dependency Injection), kunnen kind-Views @ObservedObject of @EnvironmentObject gebruiken om toegang te krijgen tot dat object zonder het opnieuw te hoeven maken.

Voorbeeld:

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("Waarde: \(model.value)")
    }
}

Hier wordt @StateObject alleen in de ouder-View gebruikt, en de kind-View krijgt de referentie via @ObservedObject. Op deze manier is @StateObject niet verplicht als het object buiten de View wordt gemaakt of van bovenaf wordt doorgegeven.