Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Aké zmeny boli zavedené v MVVMCross V3 týkajúce sa konštrukcie ViewModel Construction


Aké zmeny boli zavedené v MVVMCross V3 týkajúce sa konštrukcie ViewModel Construction


V MVVMCross V3 bolo zavedených niekoľko významných zmien týkajúcich sa konštrukcie ViewModel, ktorej cieľom bolo zvýšiť testovateľnosť a použiteľnosť pre vývojárov. Tu sú kľúčové zmeny:

1. Injekcia závislosti na konštruktori: Jednou z hlavných zmien bolo zavedenie injekcie závislosti na založenej na konštruktoroch. To umožnilo vývojárom vložiť závislosti priamo do konštruktora spoločnosti ViewModel, čo uľahčuje riadenie závislostí a zlepšenie testovateľnosti. Predtým sa závislosti často spravovali inými prostriedkami, ktoré by mohli byť menej jednoduché.

2. Navigácia pomocou zadaných navigačných tried: MVVMCross V3 zaviedla nový navigačný systém, ktorý používal zadané navigačné triedy. To znamenalo, že namiesto toho, aby sa navigovali priamo k názorom, vývojári sa mohli navigovať medzi ViewModels pomocou silne napísaných tried. Tento prístup zjednodušil navigáciu medzi platformami abstraktom detailov špecifických pre platformu.

3. Uloženie a nabíjanie stavu ViewModel pre Tombstoning: Ďalšou významnou funkciou zavedenou vo V3 bola schopnosť ušetriť a znovu načítať stav ViewModel. Toto bolo užitočné najmä pri riešení scenárov „Tombstoning“, kde by aplikácia mohla byť ukončená operačným systémom kvôli obmedzeniam pamäte a potom sa obnovila, keď sa k nemu používateľ vráti. Uložením štátu ViewModel by aplikácie mohli zachovať svoj súčasný stav aj po ukončení a reštartovaní.

4. Navigačné parametre odovzdané do metódy `init ()`: V starších verziách MVVMCross boli navigačné parametre odovzdávané priamo do konštruktora ViewModel. Začiatok V3 sa však tieto parametre namiesto toho odovzdali metóde `init ()`. Táto zmena umožnila používať konštruktor výlučne na injekciu závislosti, čím sa kód čistilo a udržal. Metóda `init ()` sa stala miestom, kde boli spracované navigačné parametre, čo umožňuje flexibilnejšiu logiku inicializácie.

Celkovo tieto zmeny v MVVMCross V3 poskytli štruktúrovanejší a udržiavateľný spôsob konštrukcie a riadenia pohľadov, čím sa zvýšilo celkový vývojový zážitok pre aplikácie viacerých platforiem.

Citácie:
[1] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/advanced/custoughing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareEngineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-are-using-viewModels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-instacess
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvvmcross-bindings
[9] https://www.mvvmcross.com/documentation/funmamentals/navigation
[10] https://www.mvvmcross.com/documentation/funmamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md