androidjetpackcompose中的“remember”和“mutableState”有什么区别?
我是喷气背包组合的新手,并试图了解remember和mutableStateOf
换句话说,这条线之间的尊重
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}",
)
另一个变体(在 中添加alpha12)rememberSaveable类似于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的替代方法Flow。Compose默认情况下不观察此对象的任何更改,因此不会发生重组。如果您希望观察更改并缓存状态,请使用remember. 如果您不需要缓存而只想观察,则可以使用derivedStateOf. 这是如何使用它的示例。
THE END
二维码