在Compose中处理副作用时,我们需要注意以下方面:
确定你的函数是否会引起副作用,比如修改状态、发起网络请求等。
当引起副作用时,应该使用LaunchedEffect函数来启动协程,以便在主线程之外的线程中执行代码。
示例代码:
@Composable fun CounterButton() { var count by rememberSaveable { mutableStateOf(0) } LaunchedEffect(count) { // 模拟耗时操作 delay(500) // 更新状态 count++ }
Button(
onClick = { count++ },
modifier = Modifier.padding(8.dp)
) {
Text("点击计数器: $count")
}
}
这个例子解释如下:
在CounterButton函数中,我们有一个变量来保存计数器的值。当我们点击按钮时,计数器会增加1。同时,我们还使用LaunchedEffect来记录计数器的变化,并在主线程之外启动代码块。
在代码块中,我们模拟一个耗时的操作500毫秒,然后更新计数器的状态。
由于代码块是在主线程之外执行的,因此操作不会阻塞主线程,从而保持了界面的反应灵敏性。
上一篇:AndroidCompose-导航和深链接问题-IllegalArgumentException:导航目标不是此NavGraph的直接子项。
下一篇:AndroidCompose-Navigation2.4.0-alpha2崩溃NoSuchMethodError