Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existujú nejaké bežné úskalia pri používaní MVXView a MVXViewController v MVVMCross


Existujú nejaké bežné úskalia pri používaní MVXView a MVXViewController v MVVMCross


Pri použití `MVXView` a` MVXViewController` v MVVMCross môže vzniknúť niekoľko bežných úskalí. Pochopenie týchto problémov môže vývojárom pomôcť vyhnúť sa im a zabezpečiť plynulejší rozvoj.

1. Problémy s konverziou napíšte **

Jedným z bežných problémov je konverzia typu. Vo vzorke MVVM nemusia byť podľa UI vlastnosti definované vo ViewModel priamo konzumovateľné. Napríklad vlastnosť obrazu môže byť bajtové pole, ale používateľské rozhranie ho očakáva ako zdroj obrázka. MVVMCross poskytuje rozhranie „IMVXValuConverter“ na spracovanie takýchto konverzií, ale vyžaduje odlievanie, ktoré môže byť ťažkopádne. Generická trieda `MVXValuConverter` pomáha tým, že vám umožní explicitne zadať typy vstupov a výstupov [1].

2. Správa životného cyklu **

Počnúc MVVMCross 5.0 sú vidieky spojené s životným cyklom pohľadu, ktoré poskytujú metódy ako „objavenie ()`, `objavené ()`, `zmiznutie ()` a `zmiznuté ()`. Aj keď tieto metódy ponúkajú väčšiu kontrolu nad stavom ViewModel, nie sú 100% spoľahlivé a môžu byť ovplyvnené udalosťami špecifickými pre platformu alebo vlastnú logiku aplikácií [2] [7]. Je rozhodujúce zabezpečenie správneho zaobchádzania s týmito udalosťami životného cyklu.

3. Problémy s väzbou **

Môžu sa vyskytnúť problémy s väzbou, najmä pri používaní vlastných zobrazení alebo ovládacích prvkov. Napríklad, ak sa vytvorí vlastné ovládacie prvky pred dostupným údajom spoločnosti ViewModel, „DataContext“ môže byť null. Použitie `DeLEASTBind` môže pomôcť vyriešiť to oneskorením väzby, kým nie sú údaje k dispozícii [4].

4. Opätovné použitie ViewModels **

ViewModels v MVVMCross, najmä na iOS, sa môžu pevne spojiť s konkrétnymi názormi, čím sa znižuje ich opakovane použiteľnosť. Stáva sa to, keď ViewModels spracúvajú logiku špecifickú pre zobrazenie, napríklad štítky formátovania alebo pôsobenie ako zdroje údajov pre zobrazenia tabuľky. Aby ste tomu zabránili, udržujte ViewModels zamerané na obchodnú logiku a používajte prevodníky alebo iné mechanizmy na zvládnutie transformácií špecifických pre pohľad [3].

5. Navigácia špecifická pre platformu **

MVVMCross podporuje navigáciu v rámci platformy, ale každá platforma má jedinečné vzory prezentácie. Napríklad v systéme iOS môže používať storyboardy pre tok obrazovky konfliktné s prístupom MVVMCROSS. Najlepšie je spracovať navigačnú logiku v programe ViewModel a použiť moderátorov špecifických pre platformu na správu spôsobu zobrazovania zobrazení [5] [9].

6. Bezpečnosť linker **

MVVMCROSS nie je bezpečný, čo znamená, že časti rámca môžu byť počas kompilácie odstránené linkerom. To môže viesť k chybám runtime. Aby ste tomu zabránili, musíte naznačiť linker, aby ste zachovali potrebné časti rámca [6].

Tým, že si uvedomia tieto potenciálne úskalia, vývojári môžu lepšie orientovať v zložitosti používania aplikácií `MVXView` a` MVXViewController` v aplikáciách MVVMCross.

Citácie:
Https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvvm-apps-with-xamarin-mith-xamarin-mith-mith-mith-xamarin-mith-mith-with-xamarin-and-mcross
[2] https://www.mvvmcross.com/mvvmcross-5-release/
[3] https://www.danielhall.io/the-problems-with-mvvm-on-ios
[4] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios-and-mvvmcross
[5] https://kerry.lothrop.de/ios-ui-with-mvvvmcross/
[6] https://github.com/mvvmcross/mvvmcross/issues/4286
[7] https://www.mvvmcross.com/documentation/funmamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/45966067/mvvmcross-iphone-and-ipad-best-cractices
[9] https://www.mvvmcross.com/documentation/funmamentals/view-presenters