Junior — Middle
Je možné sa v určitých scenároch vyhnúť použitiu StateObject?
sobes.tech AI
Odpoveď od AI
Áno, v niektorých scenároch je možné sa vyhnúť používaniu @StateObject.
@StateObject je určený na vytváranie a uchovávanie ObservableObject vo vnútri View, aby pretrval počas opätovného vykresľovania. Ak je objekt vytvorený a spravovaný mimo View (napríklad v rodičovskom komponentu alebo pomocou Dependency Injection), podriadené View môžu použiť @ObservedObject alebo @EnvironmentObject na prístup k tomuto objektu bez nutnosti ho znova vytvárať.
Prí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)")
}
}
Tu je @StateObject použitý iba v rodičovskom View, a podriadené View získava odkaz cez @ObservedObject. Týmto spôsobom, ak je objekt vytvorený mimo View alebo odovzdaný zhora, @StateObject nie je povinné.