Junior — Middle
Lze se v určitých scénářích obejít bez použití StateObject?
sobes.tech AI
Odpověď od AI
Ano, v některých scénářích je možné se obejít bez použití @StateObject.
@StateObject je určen k vytvoření a uchování ObservableObject uvnitř View, aby přetrval při překresleních. Pokud je objekt vytvořen a spravován mimo View (například v rodičovském komponentu nebo pomocí Dependency Injection), mohou podřízené View používat @ObservedObject nebo @EnvironmentObject k přístupu k tomuto objektu bez nutnosti jej znovu vytvářet.
Příklad:
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("Hodnota: \(model.value)")
}
}
Zde je @StateObject použit pouze v rodičovském View, a podřízené View získává odkaz přes @ObservedObject. Tímto způsobem, pokud je objekt vytvořen mimo View nebo předán shora, není @StateObject povinné.