.onChange 메서드에서는 현재로써는 하나의 프로퍼티에 대해서만 감시할 수 있습니다. 두 개 이상의 프로퍼티를 감시해야 할 경우, Combine 프레임워크에서 제공하는 연산자(ex. zip)를 사용하거나, 하나의 프로퍼티의 값이 변경될 때 두 개 이상의 프로퍼티에 대해서 업데이트를 수행하는 메서드를 구현하는 것이 좋습니다.
struct ContentView: View {
@State var name: String = ""
@State var age: Int = 0
var body: some View {
VStack {
TextField("Enter name", text: $name)
Text("Name: \(name)")
Stepper("Enter age", value: $age)
Text("Age: \(age)")
}
.onChange(of: (name, age)) { newValue in
print("Name: \(newValue.0), Age: \(newValue.1)")
}
}
}
위 예시에서는 name과 age 변수 모두에 대한 변경 사항을 감시하며, 두 변수 중 하나라도 변경될 때마다 실행되는 onChange 클로저에서 두 값을 모두 출력하고 있습니다. onChange 클로저에서 튜플을 사용하여 두 값을 모두 가져오도록 구현했습니다.