Junior — Middle
Peut-on se passer de l'utilisation de StateObject dans certains scénarios?
sobes.tech IA
Réponse de l'IA
Oui, dans certains scénarios, il est possible de se passer de @StateObject.
@StateObject est conçu pour créer et stocker un objet ObservableObject à l’intérieur d’une vue, afin qu’il persiste lors des reconstructions. Si l’objet est créé et géré en dehors de la vue (par exemple, dans un composant parent ou via l’injection de dépendances), les vues enfants peuvent utiliser @ObservedObject ou @EnvironmentObject pour accéder à cet objet sans avoir à le recréer.
Exemple:
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("Valeur: \(model.value)")
}
}
Ici, @StateObject est utilisé uniquement dans la vue parent, et la vue enfant obtient la référence via @ObservedObject. Ainsi, si l’objet est créé en dehors de la vue ou passé depuis le haut, @StateObject n’est pas obligatoire.