Jetpack ComposeのRememberとStateについて

こんにちは!今日はRememberMutableStateについてのメモです。

  • mutableStateofについて
    mutableStateOfはComposable内で監視可能な状態変数を作成します。`mutableStateOf()'で作成した変数の値が変わるとその値を読み込むComposableやラムダの再コンポーズが実行されます。

  • rememberについて
    rememberを使用することで再コンポーズ後もmutableStateで作成した変数を記憶しておくことができます。rememberがないとせっかく再コンポーズを行っても値を保持していないので値が初期化されています。

val name = mutableStateOf("")

// name.value = "hoge"などで値を変更するとnameを使用するComposableやラムダの再コンポーズが行われます。しかし実際に再Composeを行うとrememberがないので再度name=""で初期化されてしまいます。
var name = remember { "" }

// 反対にrememberだけだといくらnameの値を書き換えても再コンポーズは行われません。なぜならJetpack ComposesはStateオブジェクトが変更されたときのみ再コンポーズが行われるからです。

よって公式にもあるように下記のように書くことになります。

val name = remember { mutableStateOf("") }

参考

状態とJetpack Compose