我在 YouTube 上看了一些教程项目,其中一些制作了 viewmodel 文件并编写了一些代码,只是为了使用 viewmodel!
我们有 remember
和 rememberSavable
和 state
和 recomposition
和 ... 在 Jetpack Compose 中。那么为什么还有人使用 viewmodel 呢?!
这是一些更多的代码,使我们初学者更难以理解该项目。
我猜他们很难学习 XML 的 View 模型,他们不能忘记它!
在 jetpack compose 中是否可以以一种我们无论如何都不需要使用 viewmodel 的方式编写代码?
最佳答案
ViewModel 对于在屏幕之间传递数据或更改 Composable(如在 xml 中)仍然很有用。
假设您有一个购物车可组合项,您希望从中更改 TopAppBar 或其他彼此不相关但更改 TopAppbar 颜色或文本的可组合项。您可以使用共享的 ViewModel 从不同位置进行设置,并在 TopAppBar 可组合项中监听 mutableState。
此外,remember 是通过重组存储数据,rememberSaveable 在 remember 之上添加配置更改。当您移动到下一个屏幕并返回时,如果您的可组合项未在组合中,这些将被重新实例化,但只要您的应用程序处于事件状态,您就可以将数据保留在 ViewModel 中。您可以通过多种方式使用 ViewModel。
最后但同样重要的是,请记住使您的可组合项有状态,而不是使用状态托管使您的可组合项更易于维护。
如果您在有状态可组合项之上构建层,则当子项或父项中的任何 MutableState 发生变化时,您的可组合项会增加状态的排列。
跟踪从 parent 到 child 的状态变化可能很困难。当我的 Modifier.pointerInput(keys)
状态未按预期更改时,我有时会遇到此问题。
在我看来,状态管理是 Compose 中最困难的方面之一。因此,状态越少的可组合项越容易管理可组合项的内部更改
关于android-jetpack-compose - 为什么有些人仍然在 jetpack compose 中使用 viewmodel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73863771/