Jetpack Compose の State と MutableState の理解を深めていく
MutableState
MutableState
は、状態が動的に変更されるシナリオで使用され、変更が UI に直接反映されるようにします。これにより、状態の変更をリアルタイムでユーザーに表示することができます。
適用場面と例:
- ユーザー入力: ユーザーがフォームに入力する際、その入力値を直ちに UI に反映させる必要があります。
- データの動的フェッチ: サーバーからデータを取得し、取得したデータに基づいて UI を更新する場合。
コード例
@Composable
fun ExampleComponent() {
var value by remember { mutableStateOf("") }
TextField(
value = value,
onValueChange = { newValue -> value = newValue }
)
}
State
State
は、読み取り専用のデータや、親コンポーネントが管理するデータの表示に使用されます。このオブジェクトは、UI が状態の変更を監視するだけで、自身で状態を更新することはありません。
適用場面と例:
- 読み取り専用データの表示: 詳細画面での商品情報の表示など、編集不要でデータを表示する場面。
- 親によって管理される状態の表示: 親コンポーネントが状態を管理し、子コンポーネントがそれを表示するだけの場合。
コード例
@Composable
fun DisplayComponent(state: State<String>) {
Text(text = state.value)
}
選択のポイント
- MutableState: 状態が変更可能で、その変更が UI に影響を与える場合に適しています。
- State: 状態の読み取り専用が必要、または状態の更新が別の場所で管理される場合に適しています。