我正在学习 jetpack-compose,我想了解 android jetpack-compose 库中对副作用 API 的需求。
我对启动效果了解甚少,也没有编写带有或不带有它的代码来处理不可组合范围的工作。 对于这两种情况,代码的工作方式相同。
Row {
Text(text = "Hello World")
Button(onClick = {
state = !state
Toast.makeText(context, "Button clicked", Toast.LENGTH_SHORT).show()
}){
Text(text = "Click me")
}
}
Row {
Text(text = "Hello World")
Button(onClick = {
state = !state
}){
Text(text = "Click me")
}
LaunchedEffect(key1 = state, block = {
Toast.makeText(context, "Button clicked", Toast.LENGTH_SHORT).show()
})
}
请帮助我理解副作用 API 以及为什么我们需要一个强大的示例
https://developer.android.com/jetpack/compose/side-effects
副作用是在可组合函数范围之外发生的应用程序状态更改。
onClick = { }
<<< this lambda is not a composable (it is outside the scope of the function).
它不会被重组。
所以你的 onClick 是一个副作用,两个例子是相同的(一个更容易阅读)。