V podstatě, jsem hnízdění @Binding
3 vrstvy hluboké.
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
}
}
Podle toho, co struct změnit doubleValue
je jedno kde didSet
bude se běhat, takže například pokud jsem to změnit v LayerThree
jen, že jeden bude tisknout, nikdo z ostatních.
Jsem schopen sledovat změny s .onChange(of: doubleValue)
což se pak utéct, když se to mění, ale to nedává smysl pro mě proč didSet
nechce se spustit až na struct, kde se to tu změnilo od.
Je @Binding
struct konkrétní?