अनिवार्य रूप से, मैं कर रहा हूँ घोंसले के शिकार @Binding
3 परतों गहरा है ।
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
}
}
जो भी संरचना बदल doubleValue
में से एक है, जहां didSet
जाएगा चलाने के लिए मिलता है, तो उदाहरण के लिए अगर मैं इसे बदलने में LayerThree
केवल एक है कि प्रिंट होगा, दूसरों से कोई भी होगा.
मैं कर रहा हूँ देखने के लिए के लिए परिवर्तन के साथ .onChange(of: doubleValue)
जो होगा फिर चलाने के लिए मिलता है जब यह परिवर्तन, लेकिन यह नहीं कर रही है मुझे समझ में क्यों didSet
रन नहीं मिलेगा सिवाय संरचना पर जहां यह से बदल दिया.
है @Binding
संरचना विशिष्ट?