În esență, sunt cuiburi @Binding
3 straturi profunde.
struct LayerOne: View {
@State private var doubleValue = 0.0
var body: some View {
LayerTwo(doubleValue: $doubleValue)
}
}
struct LayerTwo: View {
@Binding var doubleValue: Double {
didSet {
print(doubleValue)
}
}
var body: some View {
LayerThree(doubleValue: $doubleValue)
}
}
struct LayerThree: View {
@Binding var doubleValue: Double {
didSet {
print(doubleValue) // Only this print gets run when doubleValue is updated from this struct
}
}
var body: Some view {
// Button here changes doubleValue
}
}
Indiferent de struct am schimba doubleValue
este cel care didSet
va rula, astfel încât, de exemplu, dacă am schimba în LayerThree
numai că o va imprima, nici unul dintre ceilalți vor.
Sunt capabil de a uita-te pentru schimbări cu .onChange(of: doubleValue)
care va ajunge apoi rula atunci când se schimbă dar nu face sens pentru mine de ce didSet
nu va alerga afară de pe struct unde s-a schimbat de la.
Este @Binding
struct specifice?