gpt4 book ai didi

android - Jetpack Compose 中的 remember 和 rememberUpdatedState 的区别?

转载 作者:行者123 更新时间:2023-12-04 14:04:09 25 4
gpt4 key购买 nike

我很困惑,谁能解释我之间的区别:

val variable by remember { mutableStateOf() }
val variable by rememberUpdatedState()
当我查看 rememberUpdatedStates 的源代码时我实际上看到: remember { mutableStateOf() }
@Composable
fun <T> rememberUpdatedState(newValue: T): State<T> = remember {
mutableStateOf(newValue)
}.apply { value = newValue }

最佳答案

remember之间的区别和 rememberUpdatedStates是:
记住

Remember the value produced by calculation. calculation will only be evaluated during the composition. Recomposition will always return the value produced by composition.


当您使用记住时,对重组的每次连续调用将仅返回最初在第一次调用记住时计算的相同值。您可以将此视为只读状态,您无法在 future 引用时更新,而重新计算将引用初始评估。

记住更新状态

remember a mutableStateOf and update its value to newValue on each recomposition of the rememberUpdatedState call.

rememberUpdatedState should be used when parameters or values computed during composition are referenced by a long-lived lambda or object expression. Recomposition will update the resulting State without recreating the long-lived lambda or object, allowing that object to persist without cancelling and resubscribing, or relaunching a long-lived operation that may be expensive or prohibitive to recreate and restart.


在这里,预计有时您的计算可能需要一段时间,并且计算可能会相当慢。在这种情况下,您将获得最新值而不是 lambda,它会对每次重组产生影响,以便您可以引用计算产生的最新值。
通过使用此方法,您可以确保每次重组都更新您的 UI,而无需重新创建长期存在的 lambda 或重新启动您在记住方法的 lambda 回调期间可能进行的长期操作。

关于android - Jetpack Compose 中的 remember 和 rememberUpdatedState 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69085027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com