尽量避免在可组合中调用API,特别是在从后一步界面返回到该可组合时。如果必须在可组合中调用API,则可以使用ViewModel来缓存数据,并在可组合中检查数据是否存在。下面是一个示例:
ViewModel类:
class MyViewModel : ViewModel() {
private val myLiveData = MutableLiveData()
fun getMyData(): LiveData {
return myLiveData
}
fun loadData() {
// Call API to load data
myLiveData.value = "Data loaded from API"
}
}
可组合类:
@Composable
fun MyComposable() {
val viewModel: MyViewModel = viewModel()
val myData: String? by viewModel.getMyData().observeAsState(null)
if (myData == null) {
LaunchedEffect(null) {
viewModel.loadData()
}
}
// Render UI using myData
}
在上面的示例中,通过使用ViewModel,我们将数据缓存起来,而不需要在每次进入可组合时调用API。在可组合中,我们使用observeAsState()将LiveData转换为State,并且只在数据不存在时(即第一次进入可组合)调用loadData()方法以从API中加载数据。
上一篇:避免在返回当前对象时进行复制