- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
语境
在 Jetpack compose 中,我们可以选择使用 rememberCoroutineScope()
以及使用 LaunchedEffect
可组合以使用协程/运行挂起功能(显示 snackbar 等)。
到目前为止,我采用的约定是在我的 compose 树的顶部记住一个协程范围,并通过函数参数将它传递到需要它的地方。这似乎是一种很好的做法,但另一方面,它给我的函数签名增加了额外的噪音。
问题
LaunchedEffect
超过 rememberCoroutineScope()
在可组合函数内部? rememberCoroutineScope()
在实际启动协程的每个函数中? 最佳答案
在这里留下我的理解:
问题一:LaunchedEffect
当您希望在您的可组合组件首次启动/重新启动(或关键参数已更改)时必须执行某些操作时,应使用此选项。例如,当您想从 ViewModel 请求一些数据或运行某种动画时......rememberCoroutineScope
另一方面,特定于存储协程范围,允许代码启动一些 suspend
功能...
恕我直言,它们之间的唯一关系是您也可以使用 LaunchedEffect
启动协程...
问题二:正如您在文档中看到的,rememberCoroutineScope
将协程范围的引用保持在组合的特定点。因此,如果从重组中删除给定的可组合项,则该协程将自动取消。例如,您有以下可组合调用 A -> B -> C
.如果你还记得 C
中的协程范围并且从组合中删除,协程会自动取消。但如果你记得 A
,通过 B
传递范围和 C
, 在 C
中使用此范围,然后是 C
被删除,协程将继续运行(因为它被记住在 A
中)...
关于android - 使用 rememberCoroutineScope() 与 LaunchedEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66474049/
我只想在可组合加载时运行一次代码。所以我使用 LaunchedEffect with key as true 来实现这一点。 LaunchedEffect(true) { // do API
有没有办法在 LaunchedEffect 中获取 Context?我需要调用某个函数,该函数需要引用 Context 对象才能执行。 我不能使用 LocalContext.current,因为: @
我正在使用 compose 实现 MVI。为了让我遵循正确的事件循环,我需要通过我的 View 模型传播点击事件,然后观察副作用。我看过一些实现,它们都使用 LaunchedEffect(true)
语境 在 Jetpack compose 中,我们可以选择使用 rememberCoroutineScope()以及使用 LaunchedEffect可组合以使用协程/运行挂起功能(显示 snackb
大家好,我正在学习项目中的副作用。我想知道什么时候应该在什么场景下使用LaunchedEffect和SideEffect。我正在使用这两种效果添加一些代码。如果我在这里做错了,请告诉我。 第一次使用L
如果我对文档的理解正确,则在 rememberUpdatedState 未更改的情况下,LaunchedEffect 不应再次运行。 如果我运行类似下面这段代码的代码,那么它不会按预期工作,并且值会在
我是 jetpack compose 的新手,我尝试构建一个小项目来学习 jetpack compose,我有示例代码,并且为了 composableScope.launch 它抛出一个错误,因为启动
为什么 SideEffect 每次我的可组合项失效时都会被调用,但 LaunchedEffect 也不成立? sealed class SomeState { object Error:SomeSt
我是一名优秀的程序员,十分优秀!