Return Value 戻り値
A scene that triggers an action in response to a change. あるシーン、それはあるアクションをある変化に答えて引き起こします。
Availability 有効性
Technology
A scene that triggers an action in response to a change. あるシーン、それはあるアクションをある変化に答えて引き起こします。
value
action
A closure to run when the value changes. The closure provides a single new
parameter that indicates the changed value.
値が変化する時に実行することになるクロージャ。クロージャは、単一のnew
パラメータを提供します、それは変更された値を指し示します。
Use this modifier to trigger a side effect when a value changes, like the value associated with an Environment
key or a Binding
. For example, you can clear a cache when you notice that a scene moves to the background:
この修飾子を使って、ある値が変化する時にある副作用を引き起こしてください、Environment
キーやBinding
と結び付けられた値のような。例えば、あなたはあるキャッシュを、あなたがあるシーンがバックグラウンドに移動することに気づく時にクリアできます:
struct MyScene: Scene {
private var scenePhase (\.scenePhase)
private var cache = DataCache()
var body: some Scene {
WindowGroup {
MyRootView()
}
.onChange(of: scenePhase) { newScenePhase in
if newScenePhase == .background {
cache.empty()
}
}
}
}
The system calls the action
closure on the main thread, so avoid long-running tasks in the closure. If you need to perform such tasks, dispatch to a background queue:
システムは、action
クロージャをメインスレッド上で呼び出します、なのでクロージャの中で長く動作するタスクを避けてください。あなたがそのようなタスクを実行する必要があるならば、あるバックグラウンドキューにディスパッチしてください:
.onChange(of: scenePhase) { newScenePhase in
if newScenePhase == .background {
DispatchQueue.global(qos: .background).async {
// ...
}
}
}
The system passes the new value into the closure. If you need the old value, capture it in the closure. システムは、新しい値をクロージャへと渡します。あなたが古い値を必要とするならば、それをクロージャの中でキャプチャしてください。