'Better way use @State or @ObservableObject

Hi everyone I have a question about @State vs @ObservableObject with SwiftUI

I have a view that contains a LazyHGrid To have a custom cell of the LazyHGrid I preferred to create a new struct with the custom cell.


The view hierarchy is composed as follows:

struct View1 -> struct LazyHGrid -> struct LazyHGridCustomCell

In View1 I have a text that must be replaced with content of the LazyHGridCustomCell every time it is selected.

At this point in view of my hierarchy should I use @State & @Binding to update the text or would it be better @ObservableObject?

In case I wanted to use the @State wrapper I would find myself like this:

  • struct View1 (@State)
  • struct LazyHGrid (@Binding)
  • struct LazyHGridCustomCell (@Binding)

I was wondering if this is the right way or consider @ObservableObject

I created a code example based on my question .. It was created just to let you understand what I mean to avoid being misunderstood

I was wondering if it is right to create such a situation or use an @ObservableObject

In case this path is wrong can you show me an example of the right way to go to get the correct result?

Thanks for suggestion


struct View1: View {
    @State private var name: String
    
    var body: some View {
        Text(name)
        LazyHGridView(name: $name)
    }
}

struct LazyHGridView: View { 
    @Binding var name: String
    
    var body: some View {
        LazyHGrid(rows: Array(repeating: GridItem(), count: 2)) {
            ForEach(reservationTimeItems) { item in
                LazyHGridCustomCell(name: $name)
            }
        }
    }
}
    
struct LazyHGridCustomCell: View {
    @Binding var name: String
    
    var body: some View {
        Text(name)
            .foregroundColor(.white)
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source