Sobes.tech
Junior — Middle

¿Se puede prescindir del uso de StateObject en ciertos escenarios?

sobes.tech AI

Respuesta de la IA

Sí, en algunos escenarios es posible prescindir del uso de @StateObject.

@StateObject está diseñado para crear y mantener un objeto ObservableObject dentro de una vista, para que persista durante las actualizaciones de la vista. Si el objeto se crea y gestiona fuera de la vista (por ejemplo, en un componente padre o mediante inyección de dependencias), las vistas hijas pueden usar @ObservedObject o @EnvironmentObject para acceder a ese objeto sin necesidad de crearlo de nuevo.

Ejemplo:

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)")
    }
}

Aquí, @StateObject se usa solo en la vista padre, y la vista hija obtiene la referencia a través de @ObservedObject. De esta manera, si el objeto se crea fuera de la vista o se pasa desde arriba, @StateObject no es obligatorio.