かんたんに
-
@Observableは、マクロの一種 -
@State,@Environment,@Bindableはプロパティラッパーの一種 -
@State,@Environment,@Bindableは@Observableとインターフェースさせるために利用される -
@Stateは、ビューの状態をモデルに格納 -
@Environmentは、値をグローバルにアクセシブルな値として伝搬させる -
@Bindableは、軽量、その型からバインディングを作成できるようにすることだけ
使い分け
モデルはビュー自体の状態である必要があるか? → Yes: @State
モデルはアプリケーションのグローバル環境の一部である必要があるか? → Yes: @Environment
モデルに必要なのはバインディングだけ? → Yes: @Bindable
全ての質問がYesでないなら、モデルをビューのプロパティとして使用するだけ
参考
Discover Observation in SwiftUI
あとがき
- 使い分けを知ることによりその用語の役割、機能について知ることが出来ました。
-
ObservableObjectから@Observableへの変更など古いSwiftUIからの移行についても案内されていて親切だと思いました。 - WWDC2024で早く新情報が提供されることに期待してます。
