正如你在代码中看到的,我有两个可组合的函数,名为Screen和Body。当showError的状态发生变化时,body函数也会被重新组合。它是否有任何副作用?如果有,如何避免这种重新组合。
@Composable
fun Screen(viewModel: ViewModel) {
val state by viewModel.uiState.collectAsState()
if (state.showError) {
Text("sample view")
}
Body(state = state)
}
@Composable
fun Body(state: UiState) {
// todo
}
1条答案
按热度按时间hwamh0ep1#
这是compose函数的默认行为。每当由于状态值的任何更改而观察到状态时,函数都会重新组合并显示更新的值。所以,是的,在使用可组合函数时,您可能需要确保一些事情,例如,如果你在一个可组合函数中声明了一个变量,并且这个变量后来被更新,那么这个变量'的值将在重新组合函数时进入默认状态。
要避免重组,请执行以下操作:我不认为这是可能的,特别是当你使用状态变量或记忆函数时,但你可以做的是最小化所需的重组。
下面是关于其生命周期如何工作的参考。
https://developer.android.com/jetpack/compose/lifecycle