swiftui中onChange函数的使用,监听变量的变化

590 阅读1分钟

在 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 才能正确检测到变化。