LeoAndo / development-conference-memo

0 stars 0 forks source link

Advanced state and side effects in Jetpack Compose #396

Open LeoAndo opened 1 year ago

LeoAndo commented 1 year ago

https://io.google/2023/program/9aae6fa0-5fa2-459d-bb46-f5d13db817a0/intl/ja/ https://www.youtube.com/watch?v=TbxCz5AljQk このワークショップでは、Jetpack Compose の状態と副作用の API に関連する高度な概念について学びます。ロジックが単純でないステートフル コンポーザブルの状態ホルダーを作成する方法に加えて、コルーチンを作成して Compose コードから suspend 関数を呼び出す方法を示します。副作用とは何かを把握し、さまざまなユースケースを実現するために副作用をトリガーする LaunchedEffect や rememberUpdatedState などのさまざまな API について理解します。

LeoAndo commented 1 year ago

https://youtu.be/TbxCz5AljQk?t=672

ラムダが変更された時にエフェクトを再開したくないが以下のコードだと再開してしまう。

スクリーンショット 2023-05-27 17 01 48

エフェクトが実行中にonTimeoutラムダが変更された場合、エフェクトの終了時に新しいonTimeoutラムダが呼び出されるという保証はない。

スクリーンショット 2023-05-27 17 03 22

rememberUpdateStateを使ってこれらの問題を回避する。

スクリーンショット 2023-05-27 17 06 29