[SwiftUI] 再利用できるViewにするために@ObservedObjectではなく、@Bindingを使う

SwiftUI

SwiftUIになって、Viewの再利用が容易になってきたのですが、再利用可能Viewを作るときの注意点です。

再利用可能Viewでは、@ObservedObjectは使ってはいけない

ObservedObjectは、対象モデルを全て渡せるので、非常に便利ですが、Viewがそのモデルに大きく依存してしまいます。
つまり、Viewを再利用するときに、そのモデルも再利用しなければならず、Viewの再利用が難しくなります。

例えば、以下のReuseViewを再利用してもらうためには、TargetModelも再利用しなければならず、Viewの再利用を難しくしています。

コード

ReuseViewを使うためには、TargetModelも再利用する必要がでてきてしまいます。

再利用可能Viewでは、@Bindingで受ける

アプリケーション固有のViewの中では、@ObservedObjectを使っていても、ReuseViewへは、@Bindingで渡すようにすると、
ReuseViewの再利用が容易になります。

コード

非常にシンプルなことですが、再利用のためには、重要なことです。

Viewの再利用のために、どこまでをアプリケーション固有の@ObservableObjectで管理して、どこからを@Bindingにするかは、アーキテクチャ設計のキーの1つになりそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です