在 SwiftUI 中,onChange
修饰符用于在指定值发生变化时执行某些操作。它允许你监听一个状态或绑定值的变化,并在变化发生时运行一些代码。这个功能非常适合需要对状态变化做出响应的场景。
使用示例:
struct AppStorageTest: View {
@State private var textVal: String = ""
var body: some View {
VStack {
TextField("Enter some text", text: $textVal)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
}
.padding()
.onChange(of: textVal, initial: false) { oldVal, newVal in
print("text change:\(oldVal),\(newVal)")
}
}
}
定义一个文本输入框,并绑定一个变量textVal,再通过onChange来监听内容变化。onChange参数说明:
of:要监听的变量,
initial:是否在页面初始化的时候立即执行,
oldVal:变化前的旧值,
newVal:变化后的新值
使用效果:
注意事项
如果监听的值是一个复杂的对象(比如自定义类型的实例),则需要该对象遵循 Equatable
协议,onChange
才能正确检测到变化。