Junior — Middle
É possível dispensar o uso de StateObject em determinados cenários?
sobes.tech IA
Resposta da IA
Sim, em alguns cenários, é possível dispensar o uso de @StateObject.
@StateObject destina-se a criar e armazenar um objeto ObservableObject dentro de uma View, para que ele persista durante as atualizações da View. Se o objeto for criado e gerenciado fora da View (por exemplo, em um componente pai ou através de injeção de dependências), as Views filhas podem usar @ObservedObject ou @EnvironmentObject para acessar esse objeto sem precisar criá-lo novamente.
Exemplo:
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("Valor: \(model.value)")
}
}
Aqui, @StateObject é usado apenas na View pai, e a View filha obtém a referência através de @ObservedObject. Assim, se o objeto for criado fora da View ou passado de cima, @StateObject não é obrigatório.