Sue*_*e97 3 android kotlin android-jetpack-compose
在 ViewModel 中,remember不使用,但mutable...使用:
class CustomViewModel : ViewModel() {
// ...
var myDeckList = mutableStateListOf<Deck>()
// ...
}
Run Code Online (Sandbox Code Playgroud)
是否ViewModel有类似于remember规定的委托责任?
如果是这样,为什么mutable...不委托?
Arp*_*kla 12
remember用于在重组时保留状态。如果我们将状态存储在 ViewModel 内部,它会自动在重组中幸存下来,因为它位于组合树之外。
mutableStateOf服务于不同的目的。它创建了一个MutableState:
一个可变值持有者,在执行 [Composable] 函数期间读取 [value] 属性,当前的 [RecomposeScope] 将订阅该值的更改。当写入并更改 [value] 属性时,将安排任何订阅的 [RecomposeScope] 的重组。
它设置了一个观察者模式(如 LiveData、StateFlow 等),其中写入值会告知读者值的变化。因此 ViewModel 与观察者模式无关,这就是为什么您仍然需要mutable...在 ViewModel 中使用函数。
您在问题中使用的内容mutableStateListOf也是如此。它创建了一个可观察且可以快照的SnapshotStateList类型。MutableList
| 归档时间: |
|
| 查看次数: |
3550 次 |
| 最近记录: |