Sobes.tech
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.