繁体   English   中英

MVVM:复杂的View / ViewModel->多个LiveData对象?

[英]MVVM: Complex View/ViewModel -> Multiple LiveData objects?

大多数MVVM示例都处理非常简单的用户界面。

但可以说我有一个活动,其中有许多要更新的视图(即大量数据)

正如我在其他地方读到的那样,多个ViewModel对象是一种错误的模式。

因此,正如我所见,有两种解决方案:

  1. 创建一个包装所有其他数据对象的单个对象(以及单个LiveData)。
    但这有一个问题-每个要更新的数据对象都会导致整个UI进行更新。

  2. 创建多个对象(以及多个LiveData对象)。
    这意味着我需要观察每个LiveData对象。 这种模式有问题吗?

提前致谢!

您提到的第一点:是的,这不是最佳的模式,但是如果数据量较小,则分离LiveDatas会增加工作量,但收益却减少

您提到的第二点:是的,这是最佳选择,您可以为要更新的每个View都拥有一个LiveData对象,并从活动或片段中观察它们。 此模式没有问题。

关于Mutilple ViewModels:如果一个ViewModel中发生的事情太多(LiveData对象或函数),则在同一活动/片段中使用多个ViewModels模式也是一种选择。 仅建议这样做以使viewModels更轻。 因此,仅当您拥有大型viewModel类时才使用此方法

  1. 创建ViewModel以获取离散类型的信息。

例如,您可以拥有一个UserViewModel来处理有关User所有状态。 这意味着您可以在另一个上下文中使用相同的ViewModel ,而无需提取不必要的数据(就像您只有一个God ViewModel )。

  1. 根据需要创建尽可能多的LiveData对象以对视图进行建模。

在可能的情况下,最好将数据压缩为逻辑对象。 如果仅仅是为了使事情易于管理。

如果您有一个User ,则应将其用于LiveDataLiveData为电子邮件地址,显示名称,年龄等使用LiveData 。这将使数据绑定的过程变得简单得多。 尝试将所有内容按逻辑分组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM