@Composable
fun Root() {
Scaffold(
floatingActionButton = {
FloatingActionButton(onClick = {}) {
Icon(Icons.Filled.Favorite)
}
}
) {
Child()
}
}
@Composable
fun Child() {
var textField1 by remember { mutableStateOf("") }
TextField(value = textField1, onValueChange = {textField1 = it})
val validateAndMakeNetworkRequest = {
}
}
在没有状态提升的情况下,如何从浮动操作按钮调用validateAndMakeNetworkRequest
?上面的代码只是一个例子,Child
composable可能非常深入
发布于 2020-12-04 17:07:01
在Jetpack Compose中,我们并没有真正调用funcions,有一个gradle插件使用了一些魔术来简化我们的代码,但是,实际发生的是我们对运行时说“嘿,这是我想调用的函数”,运行时尽可能多次地调用它来组成屏幕。
很容易注意到,如果你在一个可组合函数中输出一个Log.d("some", "thing")
,应用程序可能会多次记录它,即使我们什么都不做。
我知道你说“没有状态提升”,但这不是声明式的工作方式。您需要一个存储在状态中的布尔值和一个使用它的"if“,无论是否调用composable。
在网络请求的情况下,你可以将它分离在一个普通的函数中,并在你的FloatingActionButton
onClick
内部调用它。
https://stackoverflow.com/questions/64985708
复制