W rzeczywistości, ja гнездюсь @Binding
3 warstwy w głąb.
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
}
}
Jaką strukturę nie zmienił doubleValue
w tym, gdzie znajduje się didSet
zostanie uruchomiony, tak, że, na przykład, jeśli zmienię go w LayerThree
tylko ten zostanie wydrukowany, żaden z pozostałych nie będzie.
Mogę śledzić zmiany za pomocą .onChange(of: doubleValue)
który następnie zostanie uruchomiony, gdy on się zmieni, ale dla mnie to nie ma sensu, dlaczego didSet
nie będzie działać, chyba, że w strukturze, w której został zmieniony.
Jest @Binding
konkretna struktura?