Sue*_*e97 54 android kotlin android-jetpack-compose
我发现有两种使用Remember API声明变量的方法。
第一个是:
@Composable
fun abc() {
var aa = remember { mutableStateOf(true) }
}
Run Code Online (Sandbox Code Playgroud)
第二个是:
@Composable
fun abc() {
var aa by remember { mutableStateOf(true) }
}
Run Code Online (Sandbox Code Playgroud)
两者之间有功能上的区别吗?或者它们只是为了方便?
小智 55
这只是为了方便,简化语法。通过使用委托(按关键字),您可以跳过与值相关的操作,因为它是在幕后完成的。
在文档中您可以阅读
可通过三种方法在可组合项中声明 MutableState 对象:
val mutableState = Remember { mutableStateOf(default) }
var value by Remember { mutableStateOf(default) }
val (value, setValue) = Remember { mutableStateOf(default) }这些声明是等效的,并且作为状态的不同用途的语法糖提供。您应该选择在您正在编写的可组合项中生成最容易阅读的代码的代码。
干杯
小智 38
我注意到这两种表达方式之间存在细微差别。
如果=使用
@Composable
fun abc() {
var aa = remember { mutableStateOf(true) }
}
Run Code Online (Sandbox Code Playgroud)
那么var aa将会是类型MutableState<Boolean>。
如果by使用
@Composable
fun abc() {
var aa by remember { mutableStateOf(true) }
}
Run Code Online (Sandbox Code Playgroud)
那么var aa将会是类型Boolean。
就我个人而言,我更喜欢使用by来保留原始类型。
小智 8
在第一种情况下:每当您想使用“aa”的值时,您都必须使用“aa.value”。在第二种情况下:您不必这样做,因为在幕后您没有使用 var 的 getter。
额外的:
注意:如果您想阅读更多内容,请检查此答案以更好地理解这个概念:阅读更多内容
| 归档时间: |
|
| 查看次数: |
15237 次 |
| 最近记录: |