Jetpack Compose Launched 效果令人困惑

gao*_*way 0 kotlin android-jetpack-compose

LaunchedEffect变化value是实施println

\n

但是为什么第一次进入默认的时候也执行呢value,真是让人费解,为什么要这样设计呢。

\n
\nLaunchedEffect(value) {\n    println("--1--")\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

如何避免第一次执行\xef\xbc\x9f

\n

Den*_*mer 6

您可以像这样制作自定义效果UpdateEffect

/**
 * The same as [LaunchedEffect] but skips the first invocation
 */
@Composable
fun UpdateEffect(key: Any, block: suspend CoroutineScope.() -> Unit) {
    var isTriggered by remember { mutableStateOf(false) }

    LaunchedEffect(key) {
        if (isTriggered) {
            block()
        } else {
            isTriggered = true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将您的替换LaunchedEffectUpdateEffect.