Jetpack Compose Academy · レッスン

Composeの状態スロットとコンテンツラムダ

スロットAPIでコンポーネントを柔軟にします。

レッスン 4/413 ステップ

「Composeの状態スロットとコンテンツラムダ」はCoddyKit上の無料Jetpack Compose Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJetpack Compose Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Jetpack Compose Academyコースには全4レッスンが含まれています。

柔軟なコンポーネントを作る

slotを使うと、UIの一部をパラメータとしてコンポーネントに渡せます。呼び出し元がslotを埋めるため、1つのコンポーネントでさまざまなデザインに対応できます。

content Lambdaを使う

最も一般的なslotは、末尾に置くcontent lambdaで、型は@Composable () -> Unitです。中括弧内に記述したものが本体になります。

fun Card(content: @Composable () -> Unit) {
  Surface { content() }
}

Slotを呼び出す

slotは通常のlambdaと同じように呼び出します。content()を呼び出した場所で、Composeが呼び出し元から渡されたUIを実行します。

Card {
  Text("Anything I want lives here")
}

BooleanよりSlotが優れている理由

showIconやshowTitleのような多数のフラグを用意する代わりに、slotsを公開します。呼び出し元は必要なものだけを、自由に組み合わせられます。

名前付きSlot

コンポーネントは、それぞれをパラメータとする複数のslotを提供できます。ScaffoldではtopBar、bottomBar、contentがこれに当たります。🧩

fun Banner(
  title: @Composable () -> Unit,
  action: @Composable () -> Unit
) { /* lay them out */ }

Scopeで機能を追加する

slotをreceiver lambdaにすると、呼び出し元にヘルパーを提供できます。Columnの内部ではcontentがColumnScope.() -> Unitになるため、weightが使えます。

fun MyColumn(content: @Composable ColumnScope.() -> Unit) {
  Column { content() }
}

Slotにデータを渡す

slotから呼び出し元へ値を渡すこともできます。リスト行のslotで項目を渡せば、どのように描画するかを呼び出し元が決められます。

fun Row(item: User, content: @Composable (User) -> Unit) {
  content(item)
}

SlotでState Hoistingを維持する

slotの内容は呼び出し元が提供するため、コンポーネントは内部の内容についてステートレスでいられます。所有関係も明確に保たれます。

画面をまたいで再利用する

slotを持つ1つのCardやDialogで、よく似たコンポーネントを十数個作る必要がなくなります。枠組みを一度作り、中身だけを変えられます。♻️

Slotのデフォルト内容

slotに適切なdefaultを設定すると、単純な呼び出し元は省略でき、高度な呼び出し元は内容を完全に上書きできます。

fun Section(
  header: @Composable () -> Unit = { Text("Section") },
  content: @Composable () -> Unit
) { /* ... */ }

Slotという考え方

コンポーネントがbooleanフラグを集め始めたら、代わりにslotsを使うことを検討してください。柔軟性は切り替えではなく、UIを渡すことから生まれます。

理解度チェック

content slot lambdaの主な利点は何ですか?

まとめ

slotはUIを@Composable lambdaとして受け取ります。必要に応じてScopeを付けたり、データを渡したりできます。状態を持ち上げたまま、柔軟なコンポーネントを作れます。🚀

無料で開始

AI チューターと学ぶ Kotlin — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「Composeの状態スロットとコンテンツラムダ」レッスンは無料ですか?

はい。「Composeの状態スロットとコンテンツラムダ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Jetpack Compose Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Jetpack Compose Academyコースには全4レッスンが含まれています。

「Composeの状態スロットとコンテンツラムダ」で何を学びますか?

スロットAPIでコンポーネントを柔軟にします。 ブラウザで直接実行するハンズオンコードでJetpack Compose Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Jetpack Compose Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJetpack Compose Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Composeの状態スロットとコンテンツラムダ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJetpack Compose Academyレッスンでコードを書いて実行できますか?

はい。すべてのJetpack Compose Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ステートフルとステートレスなComposable
  2. valueとonValueChangeで状態をホイスティングする
  3. 単一の信頼できる情報源
  4. Composeの状態スロットとコンテンツラムダ
← Jetpack Compose Academyに戻る