在 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
我正在学习 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