Jetpack ComposeのRememberとStateについて
こんにちは!今日はRemember
とMutableState
についてのメモです。
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("") }