onChange(of:perform:)
为此视图添加一个修改器,当特定值更改时,该修改器将触发操作。
func onChange<V>(of value: V, perform action: @escaping (V) -> Void) -> some View where V : Equatable
返回值
当指定值更改时触发操作的视图。
参量
-
value
确定是否运行闭包时要检查的值。 -
action
值更改时要运行的闭包。 -
newValue
未通过比较检查的新值。
讨论区
您可以使用触发更改值(例如键或)的副作用。onChangeEnvironmentBinding
onChange在主线程上被调用。避免在主线程上执行长时间运行的任务。如果您需要执行长时间运行的任务以响应value更改,则应分派到后台队列。
新值将传递到闭包中。闭包可以捕获先前的值,以将其与新值进行比较。例如,在下面的代码示例中,将旧值和新值都传递给模型。PlayerView
struct PlayerView : View {var episode: Episode@State private var playState: PlayState = .pausedvar body: some View {VStack {Text(episode.title)Text(episode.showTitle)PlayButton(playState: $playState)}.onChange(of: playState) { [playState] newState inmodel.playStateDidChange(from: playState, to: newState)}}
}
加入我们一起学习SwiftUI
QQ:3365059189
SwiftUI技术交流QQ群:518696470