Jetpack Compose中ClickCounter组合函数的lambda参数如何实现点击计数更新
正确实现代码
你需要在Composable作用域中声明一个可记忆的可观察状态来存储点击计数,直接硬编码clicks = 0不会随点击更新,修改后的完整代码如下:
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { WorkTimerTheme { // 声明可记忆的可观察状态,初始值为0 var clickCount by remember { mutableStateOf(0) } Conversation(SampleData.conversationSample) ClickCounter( clicks = clickCount, // 传入当前状态值 onClick = { // 点击时更新状态,状态变化会自动触发ClickCounter重组刷新UI clickCount += 1 } ) } } } }
你需要提前导入以下扩展,保证by委托语法可以正常使用:
import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember
实现逻辑说明
remember会将状态对象保存在Compose的重组树中,不会因为组件重组被重置,保证计数的持久化mutableStateOf会创建一个可观察的状态容器,当它的值被修改时,所有依赖这个值的Composable组件会自动触发重组,拿到最新值刷新UI- 点击按钮时修改状态值,会自动触发
ClickCounter刷新,显示最新的点击次数
内容的提问来源于stack exchange,提问作者Connor
相关产品推荐
相关产品推荐

