最近よく見る @State とか @Binding とか、
あの「@で始まるやつら」って何者!?って思って調べたので、
自分用のメモがてら、プロパティラッパーについてまとめてみました✍️
💡 プロパティラッパーってなに?
簡単にいうと…
プロパティに共通の機能をもたせる便利な仕組み
たとえば、状態を保持したいとか、親子で値を共有したいとか、
保存しておきたいとか……そういうときに @ラッパー を付けるといい感じになります。
🗂 よく見るプロパティラッパーたち
| ラッパー | 使いどころ | どんな時? |
|---|---|---|
@State |
View内で値を保持したい時 | ボタン押されたかとか、フラグ管理とか |
@Binding |
親から渡ってきた値を双方向でいじりたい時 | 子Viewで値を更新したい時 |
@ObservedObject |
外から渡されたオブジェクトの変化を監視 | モデルの値が変わったら画面も変えたい |
@StateObject |
Viewの中でオブジェクトを初期化&保持 | 自分の中でデータ持ちたい時 |
@EnvironmentObject |
アプリ全体で共有したい値がある時 | 設定とか共通データ |
@AppStorage |
UserDefaults と連携したい時 |
値を保存しておきたい時(ログイン名とか) |
@Published |
モデル側で「値変わったよ〜」って通知したい時 |
ObservableObject の中身で使うやつ |
@FocusState |
TextFieldのフォーカスを制御したい時 | キーボードを出したり引っ込めたり |
@Namespace |
画面間でアニメーションさせたい時 | ヒーローアニメーション! |
まだまだ自分も理解しきれてない部分があるので、
「ここ違うよ!」「こういう使い方もあるよ!」とかあればぜひ教えてください🙏
少しでも初心者仲間の参考になれば嬉しいです!