0Pricing
Jetpack Compose Academy · 课时

提取可复用的 Composable

重构屏幕,拆分出清晰的组件。

提取可复用的 Composable 是 CoddyKit 上的免费 Jetpack Compose Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Jetpack Compose Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Jetpack Compose Academy 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Time to Refactor

Your card works, but it is one long function. Now you will split it into small, named Composables that are easier to read and reuse. 🧩

Spot Repeated Patterns

The three stat blocks are nearly identical. Repeated shapes like that are a strong signal to extract a single reusable Composable.

Extract StatBlock

Pull one stat into its own function. Pass the differing values, the count and label, in as parameters.

@Composable
fun StatBlock(count: String, label: String) {
    Column { Text(count); Text(label) }
}

Reuse It Three Times

Now the stats Row is just three clean calls. The same StatBlock renders different data each time, with zero duplication.

Row {
    StatBlock("128", "Posts")
    StatBlock("4.2k", "Followers")
    StatBlock("180", "Following")
}

Extract the Header

Group the avatar, name, and bio into a ProfileHeader Composable. The big screen function gets shorter and far easier to scan.

@Composable
fun ProfileHeader(name: String, bio: String) {
    Column { /* avatar, name, bio */ }
}

Name Things Clearly

Good Composable names describe what you see: ProfileHeader, StatBlock, FollowButton. Clear names make the card read like a sentence.

Pass Data In

Keep components flexible by accepting parameters instead of hard-coding values. The same ProfileHeader can show any user.

ProfileHeader(name = "Ada Lovelace", bio = "Building apps.")

Hoist the Click Out

Let the parent decide what a tap does. Expose an onFollowClick lambda parameter so FollowButton stays generic.

@Composable
fun FollowButton(onClick: () -> Unit) {
    Button(onClick = onClick) { Text("Follow") }
}

Assemble the Screen

The top-level ProfileCard now just composes the pieces in order. Each child Composable owns one job, which is the Compose way.

Column {
    ProfileHeader(name, bio)
    StatsRow(stats)
    FollowButton(onFollow)
}

Add a Modifier Parameter

Truly reusable Composables accept a Modifier parameter, defaulting to Modifier. Callers can then size and pad them from outside.

@Composable
fun StatBlock(
    count: String,
    label: String,
    modifier: Modifier = Modifier
) { /* ... */ }

Clean and Reusable

Your one giant function is now several small, focused, reusable Composables. This structure scales as your app grows in complexity. 🎉

Quick Check

What makes a Composable reusable across different data?

Recap: You Shipped a Card

You refactored the profile card into small reusable Composables with parameters and a Modifier slot. You now have a clean, scalable screen built end to end.

常见问题解答

「提取可复用的 Composable」课时是免费的吗?

是的 — 「提取可复用的 Composable」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Jetpack Compose Academy 课程的其余内容,请升级到 CoddyKit PRO。 Jetpack Compose Academy 课程共包含 4 节课。

「提取可复用的 Composable」这节课中我会学到什么?

重构屏幕,拆分出清晰的组件。 你通过在浏览器中直接运行的动手代码来练习 Jetpack Compose Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Jetpack Compose Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Jetpack Compose Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「提取可复用的 Composable」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Jetpack Compose Academy 课中编写并运行代码吗?

能。每节 Jetpack Compose Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 绘制个人资料卡布局草图
  2. 头像、姓名与简介区域
  3. 统计信息行与关注按钮
  4. 提取可复用的 Composable
← 返回 Jetpack Compose Academy