jetpack compose 中需要什么以及如何使用 SideEffect API?

问题描述 投票:0回答:1

我正在学习 jetpack-compose,我想了解 android jetpack-compose 库中对副作用 API 的需求。

我对启动效果了解甚少,也没有编写带有或不带有它的代码来处理不可组合范围的工作。 对于这两种情况,代码的工作方式相同。

  1. 无启动效果
Row {
        Text(text = "Hello World")
        Button(onClick = {
            state = !state
            Toast.makeText(context, "Button clicked", Toast.LENGTH_SHORT).show()
        }){
            Text(text = "Click me")
        }
    }
  1. 具有启动效果
Row {
        Text(text = "Hello World")
        Button(onClick = {
            state = !state
        }){
            Text(text = "Click me")
        }
        LaunchedEffect(key1 = state, block = {
            Toast.makeText(context, "Button clicked", Toast.LENGTH_SHORT).show()
        })
    }

请帮助我理解副作用 API 以及为什么我们需要一个强大的示例

android android-studio android-jetpack-compose android-jetpack
1个回答
0
投票

https://developer.android.com/jetpack/compose/side-effects

副作用是在可组合函数范围之外发生的应用程序状态更改。

onClick = { }
<<< this lambda is not a composable (it is outside the scope of the function).

它不会被重组。

所以你的 onClick 是一个副作用,两个例子是相同的(一个更容易阅读)。

© www.soinside.com 2019 - 2024. All rights reserved.