Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existují nějaké běžné úskalí při použití mvxview a mvxviewcontroller v MVVMCross


Existují nějaké běžné úskalí při použití mvxview a mvxviewcontroller v MVVMCross


Při použití `mvxView` a` mvxviewController` v mvvmcross může nastat několik běžných úskalí. Porozumění těmto problémům může vývojářům pomoci vyhnout se jim a zajistit hladší vývoj.

1.. Problémy s konverzí typu **

Jedním běžným problémem je konverze typu. Ve vzoru MVVM nemusí být vlastnosti definované v viewModel přímo spotřebním pomocí uživatelského rozhraní. Například vlastnost obrázku může být bajtové pole, ale uživatelské rozhraní to očekává jako zdroj obrázku. MVVMCross poskytuje rozhraní `imvxValueConverter` pro zpracování takových konverzí, ale vyžaduje lití, které může být těžkopádné. Obecná třída MVXValueConverter` pomáhá tím, že vám umožní explicitně specifikovat vstupní a výstupní typy [1].

2. správa životního cyklu **

Počínaje mvvmcross 5.0 jsou viewModely spojeny s životním cyklem pohledu a poskytují metody jako `objevující se ()`, `)`, `mizející ()` a `zmizely ()`. I když tyto metody nabízejí větší kontrolu nad stavem ViewModel, nejsou 100% spolehlivé a mohou být ovlivněny událostmi specifickými pro platformu nebo logikou vlastní aplikace [2] [7]. Zajištění správného zacházení s těmito událostmi v životním cyklu je zásadní.

3. Problémy s vazbou **

Problémy s vazbou mohou nastat, zejména při používání vlastních pohledů nebo ovládacích prvků. Například, pokud je vytvořeno vlastní ovládací prvek před dostupností údajů ViewModel, může být `DataContext` null. Použití `delayBind` může to pomoci vyřešit to zpožděním vazby, dokud nejsou k dispozici data [4].

4. Opakovaná použitelnost viewModels **

ViewModely v MVVMCrossu, zejména na iOS, se mohou těsně spojit se specifickými pohledy, což snižuje jejich opakovatelnost. K tomu dochází, když ViewModely zpracovávají logiku specifickou pro pohledy, jako jsou formátování štítků nebo působení jako zdroje dat pro zobrazení tabulky. Chcete-li tomu zabránit, zachovejte ViewModely zaměřené na obchodní logiku a používejte převodníky nebo jiné mechanismy pro zpracování transformací specifických pro pohledu [3].

5. Navigace specifická pro platformu **

MVVMCross podporuje navigaci mezi platformami, ale každá platforma má jedinečné prezentační vzorce. Například u iOS může použití storyboardů pro tok obrazovky v rozporu s přístupem MVVMCrossovy přístupu. Nejlepší je zvládnout navigační logiku v viewModel a používat přednášející specifické pro platformu ke správě toho, jak jsou zobrazeny pohledy [5] [9].

6. Bezpečnost linker **

MVVMCross není bezpečný linker, což znamená, že části rámce mohou být linkerem během kompilace odstraněny. To může vést k chybám runtime. Abyste tomu zabránili, musíte naznačit linker, aby zachoval nezbytné části rámce [6].

Tím, že si vývojáři budou vědomi těchto potenciálních úskalí, mohou v aplikacích MVVMCross lépe navigovat složitost použití `mvxView` a` mvxViewController`.

Citace:
[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[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-io-and-mvvmcross
[5] https://kerry.lothrop.de/ios-ui-with-mvvmcross/
[6] https://github.com/mvvmcross/mvvmcross/issues/4286
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/45966067/mvvmcross-iphone-and-ipad-nejlepší postupy
[9] https://www.mvvmcross.com/documentation/fundamentals/view-presenters