[Android/Kotlin][TIL]MVVMモード解析
class SomeViewModel : ViewModel(){
// state holder -> view 상태를 결정하고 , 이것만 봐도 view를 할 수 있음
val _viewState: LiveData<ViewState>
val _viewState2 : StateFlow<ViewState>
// event -> 반드시 사용자에게 어떤 일이 일어났음을 알리는 용도
//(api 성공, error , dialog)
val _viewEvent : SingleLiveEvent<ViewEvent>
val _viewEvent : Channel<ViewState> //
//trigger
fun submit():Unit{
try{
val responseModel = repository.api()
val viewState = responseModel.toViewState()
-viewState.value = viewState
}catch( ... ){
_viewEvent.value = ViewEvent.Error(it)
}
}
}
ViewModelは、抽象的なビューでビューステータス(ViewState)を維持します.たとえば、ビューモデルは、読み書き可能な文字列属性によってテキスト入力器コントロールを抽象化します.データ・リストを表示するコントロールでは、各要素のビュー・ステータスを含むセットが使用されます.API応答値を直接ビューに渡すよりも、一度にビューに渡すように加工します.
https://justhackem.wordpress.com/2017/03/05/mvvm-architectural-pattern/#comments
ViewStateは、画面が持つ本質的なデータです.
ビューモデルでは、ビューからビューを入力するか、ビューに基づいてビューを描画します.
たとえば、ログイン画面があるとします.この画面には、EditTextというパスワードのIDがあります.
ここで、IDとパスワードはViewStateとなり、ユーザーが入力してビューモデルに埋め込まれます.
ValueConverterは本質的なデータを作成する操作です.
再ログイン画面の例では、ViewStateログイン名とパスワードがあり、アクティブなログインボタンがある場合があります.
この場合、ログインボタンがアクティブかどうかは、Value Converterに対応します.
ViewStateのIDとして、パスワードは両方ともスペースではない組み合わせで、ブール値が1つあり、ビューに反映されている必要があります.
したがって、コードを記述する際に、ViewStateでValueConverter形式を使用できるかどうかを考慮する必要があります.
ViewStateが少ないほど可読性が高くモジュール化しやすいからです.
ビューは、ユーザに情報を表示する役割であり、ユーザからイベントを受信する役割でもある.
したがって、ビューモデルはこれらのイベントを処理できる必要があります.それがCommand
例としてログイン画面を再使用すると、ログイン動作はCommandになります.
Commandは常にViewStateを使用してViewStateまたは出力信号を変更する役割です.
したがって、ビューモデルが露出するビューの動作は、ビューを直接参照する必要はありません.
https://velog.io/@bang/Android-MVVM-pattern-%EC%82%B4%ED%8E%B4%EB%B3%B4%EA%B8%B0
Reference
この問題について([Android/Kotlin][TIL]MVVMモード解析), 我々は、より多くの情報をここで見つけました https://velog.io/@hyom/AndroidKotlin-MVVM-패턴-분석テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol