面试题答案
一键面试- 使用
derivedStateOf
管理衍生状态:- 在Jetpack Compose中,
derivedStateOf
可以用来创建基于其他状态的衍生状态。它会自动跟踪依赖的基本状态变化,并在基本状态变化时更新衍生状态。
- 在Jetpack Compose中,
- 代码示例:
import androidx.compose.runtime.*
import kotlin.math.roundToInt
@Composable
fun PriceCalculation() {
// 基本状态,商品价格列表
var priceList by remember { mutableStateOf(listOf(10.0, 20.0, 30.0)) }
// 衍生状态,总价
val totalPrice by derivedStateOf {
priceList.sum()
}
// 衍生状态,平均价格
val averagePrice by derivedStateOf {
if (priceList.isEmpty()) 0.0 else (totalPrice / priceList.size).roundToInt().toDouble()
}
LaunchedEffect(Unit) {
// 模拟5秒后更新基本状态
kotlinx.coroutines.delay(5000)
priceList = listOf(15.0, 25.0, 35.0)
}
// 显示结果
println("Total Price: $totalPrice")
println("Average Price: $averagePrice")
}
在上述代码中:
mutableStateOf
创建了基本状态priceList
。derivedStateOf
分别创建了totalPrice
和averagePrice
两个衍生状态。derivedStateOf
内部的代码块会在其依赖的基本状态(这里是priceList
)变化时重新执行,从而更新衍生状态。LaunchedEffect
模拟了5秒后更新基本状态priceList
,此时totalPrice
和averagePrice
会自动更新。