Retaining beyond ViewModels
- Circuitというライブラリ
- Slackが出している
- いわゆるMVIみたいなやつ?React Hooksみたいな感じ?
- ViewModelという概念を使わない
- CircuitInjectアノテーションを使っていい感じにするとStateをComposableとして扱うことができる
- イベント更新する時はforegroundじゃないとダメなのでrepeatOnLifecycleを使わないとダメ
- けどめんどくさいけどcircuitを使えばその周辺の問題(ライフサイクルとか)を考慮しないで済む
- rememberRetainedでプレゼンターのライフサイクルを超えてstateを保持できるよ
- マーシャル??:rememberSavableを用意しないといけない時にSaverとかいうrememberSavableに即したinterfaceを自分で実装しないといけない。多分そのこと???
- なんかリバーポットみてーだな
- 入力値(ephemeral State)
- アプリ全体で扱う値(App State)と画面ごとに使う値(ephemeral State)というものがある
- おすすめの映画・ログイン情報・カートに入れた商品(app State)
- リテインドステートでメモリ上に保存するのでどこの画面からでもステートが取れるとUXがいい。App Stateっぽい概念に思える
- チュートリアルやってみます!!
Version 2.8.0-alpha03
- ViewModelがKMPでも使えるようになったあぜ
- viewModelまで共通化できる
- 今までもViewModelは共通化できはしたけどJetpackの便利なViewModelちゃんが使うことはできなかったのでめんどくさかった!!
- ViewModelScopeがどこでも使える
- 従来はCoroutineScopeを自作する必要があった
Jetpack Composeでコールバック関数を渡すのをやめよう
- Composeでコールバックすんのやめよう
- 全画面のUIイベントをonActionとしてsealed classにまとめよう
- メリット:末端のComposableでも同じ引数(onAction)を呼び出し解けばいいので再利用性とかを考慮する必要は無くなるかも
- デメリット:EventBus時代に後戻りなのでは?
- スパゲティコードにもなって可読性が低くなっちゃうよん