El lehet kerülni a StateObject használatát bizonyos helyzetekben?
sobes.tech MI
Válasz az MI-től
Igen, bizonyos szcenáriókban el lehet hagyni az @StateObject használatát.
Az @StateObject arra szolgál, hogy egy ObservableObject objektumot hozzon létre és tároljon egy nézeten belül, hogy az újrarajzolások során megmaradjon. Ha az objektum a nézeten kívül jön létre és van kezelve (például egy szülő komponensben vagy Dependency Injection segítségével), akkor az alnézetek @ObservedObject vagy @EnvironmentObject segítségével hozzáférhetnek ehhez az objektumhoz anélkül, hogy újra kellene létrehozniuk.
Példa:
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("Érték: \(model.value)")
}
}
Itt az @StateObject csak a szülő nézetben van használatban, és a gyermek nézet a @ObservedObject segítségével kapja meg a hivatkozást. Így, ha az objektum a nézeten kívül jön létre vagy felülről van átadva, az @StateObject nem kötelező.