[英]Communication between view and ViewModel in MVVM with LiveData
[英]MVVM: Complex View/ViewModel -> Multiple LiveData objects?
大多數MVVM示例都處理非常簡單的用戶界面。
但可以說我有一個活動,其中有許多要更新的視圖(即大量數據)
正如我在其他地方讀到的那樣,多個ViewModel對象是一種錯誤的模式。
因此,正如我所見,有兩種解決方案:
創建一個包裝所有其他數據對象的單個對象(以及單個LiveData)。
但這有一個問題-每個要更新的數據對象都會導致整個UI進行更新。
創建多個對象(以及多個LiveData對象)。
這意味着我需要觀察每個LiveData對象。 這種模式有問題嗎?
提前致謝!
您提到的第一點:是的,這不是最佳的模式,但是如果數據量較小,則分離LiveDatas會增加工作量,但收益卻減少
您提到的第二點:是的,這是最佳選擇,您可以為要更新的每個View都擁有一個LiveData對象,並從活動或片段中觀察它們。 此模式沒有問題。
關於Mutilple ViewModels:如果一個ViewModel中發生的事情太多(LiveData對象或函數),則在同一活動/片段中使用多個ViewModels模式也是一種選擇。 僅建議這樣做以使viewModels更輕。 因此,僅當您擁有大型viewModel類時才使用此方法
ViewModel
以獲取離散類型的信息。 例如,您可以擁有一個UserViewModel
來處理有關User
所有狀態。 這意味着您可以在另一個上下文中使用相同的ViewModel
,而無需提取不必要的數據(就像您只有一個God ViewModel
)。
LiveData
對象以對視圖進行建模。 在可能的情況下,最好將數據壓縮為邏輯對象。 如果僅僅是為了使事情易於管理。
如果您有一個User
,則應將其用於LiveData
而LiveData
為電子郵件地址,顯示名稱,年齡等使用LiveData
。這將使數據綁定的過程變得簡單得多。 嘗試將所有內容按邏輯分組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.