在 Jetpack Compose 中使用 remember in assignment 和 in delegation 有什么区别?

What's the difference between using remember in assignment vs in delegation in Jetpack Compose?

我正在学习 Compose,想知道这两行代码有什么区别:

val stateValue = remember { mutableStateOf("value") }

并且:

var stateValue by remember { mutableStateOf("value") }

在第一种方法中,我们更新状态的方式是像这样改变值:

stateValue.value = "new value"

但是当使用委托时我们只是直接改变变量的值:
stateValue = "new value"

在我们刚刚覆盖具有 remember 函数的现有值之后,如何在重新组合之后仍然“记住”状态?

委派 - 顾名思义 - 允许将 getter 和 setter 委派给单独的对象。

因此,当您对委托的 属性 执行 stateValue = "new value" 时,您 而不是 “覆盖具有记忆功能的现有值”。 发生的事情是赋值语法实际上调用 setValue() 运算符 on 属性 委托(调用 remember 返回的实例已完成属性).

初始化期间

查看文档以了解有关委托属性的更多信息: https://kotlinlang.org/docs/delegated-properties.html