我是 jetpack compose 的新手,并试图了解 remember
之间的区别和 mutableStateOf
换句话说,这条线之间的尊重
val text = remember{ mutableStateOf("") }
和这个val text = remember{ "" }
这也是val text = mutableStateOf("")
最佳答案
remember
是一个可组合的函数,可用于缓存昂贵的操作。您可以将其视为可组合的本地缓存。
val state: Int = remember { 1 }
state
在上面的代码中是不可变的。如果您想更改该状态并更新 UI,您可以使用 MutableState
. Compose
将观察任何读/写 MutableState
对象并触发 recomposition更新用户界面。val state: MutableState<Int> = remember { mutableStateOf(1) }
Text(
modifier = Modifier.clickable { state.value += 1 },
text = "${state.value}",
)
另一个变体(在 alpha12
中添加)称为 rememberSaveable
类似于 remember
,但存储的值可以在进程死亡或配置更改后继续存在。val state: MutableState<Int> = rememberSaveable { mutableStateOf(1) }
备注 : 你也可以使用属性委托(delegate)作为语法糖来解开 MutableState
.var state: Int by remember { mutableStateOf(1) }
关于你问题的最后一部分:val text = mutableStateOf("")
如果您正在执行上述操作,那么您只是在创建一个
MutableState
对象而不记得它。MutableState
是使用 LiveData
的替代方法或 Flow
. Compose
默认情况下不会观察到此对象的任何更改,因此不会发生重组。如果您希望观察更改并缓存状态,请使用 remember
.如果不需要缓存只想观察,可以使用derivedStateOf
.这是 sample如何使用它。
关于android - android jetpack compose中的 "remember"和 "mutableState"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66169601/