androidjetpackcompose中的“remember”和“mutableState”有什么区别?

我是喷气背包组合的新手,并试图了解remembermutableStateOf

换句话说,这条线之间的尊重

val text = remember{ mutableStateOf("") }

和这个

val text = remember{ "" }

这也

val text = mutableStateOf("")

回答

remember是一个可组合的函数,可用于缓存昂贵的操作。您可以将其视为可组合本地的缓存。

val state: Int = remember { 1 }

state在上面的代码是不可变的。如果要更改该状态并更新 UI,可以使用MutableState. Compose观察对MutableState对象的任何读取和写入,并触发重新组合以更新 UI。

val state: MutableState<Int> = remember { mutableStateOf(1) }

Text(
   modifier = Modifier.clickable { state.value += 1 },
   text = "${state.value}",
 )

另一个变体(在 中添加alpha12rememberSaveable类似于remember,但存储的值可以在进程死亡或配置更改后继续存在。

val state: MutableState<Int> = rememberSaveable { mutableStateOf(1) }
val state: MutableState<Int> = rememberSaveable { mutableStateOf(1) }

注意:您还可以使用属性委托作为语法糖来解开MutableState.

var state: Int by remember { mutableStateOf(1) }

关于您问题的最后一部分,如果您在可组合中执行如下所示的操作,则您只是在创建一个MutableState对象。

MutableState是使用LiveDataor的替代方法FlowCompose默认情况下不观察此对象的任何更改,因此不会发生重组。如果您希望观察更改并缓存状态,请使用remember. 如果您不需要缓存而只想观察,则可以使用derivedStateOf. 这是如何使用它的示例。


以上是androidjetpackcompose中的“remember”和“mutableState”有什么区别?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>