SwiftUI был разработан для «вложения» представлений, но вы используете его не по назначению. Переменные состояния предназначены для данных, принадлежащих представлению, а вложенное представление (или, по крайней мере, обычно) не предназначено для данных, принадлежащих представлению, поэтому это не обязательно должна быть переменная состояния.
Вместо этого вы можете просто использовать переменную count
в качестве параметра для представления Nested
, и каждый раз, когда переменная состояния count
изменяется в родительском элементе, ее тело будет повторно отображено:
struct ContentView: View {
var body: some View {
VStack {
Text("Count: \(count)")
Nested(count: count) // pass the count as an init param
Button(action: {
self.count += 1
self.nested.count += 1
}) { Text("Increment") }
}
}
@State var count = 0
struct Nested: View {
var body: some View {
Text("Nested: \(count)")
}
var count: Int
}
}