MauiReactor ve MVU deseni: .NET MAUI'de bindingsiz UI
MauiReactor, .NET MAUI uygulamaları için MVU (Model-View-Update) deseniyle çalışan, XAML ve binding kullanmadan C# ile bileşen tabanlı UI yazmayı sağlayan bir kütüphane. Yazı, bir alışkanlık takip uygulaması üzerinden stateless ve stateful bileşenleri, [Prop] ile alt bileşen iletişimini ve SetState akışını adım adım gösteriyor. Resmi .NET MAUI desteği olmayan bu yaklaşımı MVVM'e alternatif olarak değerlendirmek isteyenler için iyi bir başlangıç.
Kilit noktalar
- Reactor.Maui NuGet paketi ve Reactor.Maui.TemplatePack şablonu ile hızlı kurulum yapılabiliyor.
- Uygulama başlatma kodunda builder.UseMauiApp<App>() yerine builder.UseMauiReactorApp<MainPage>() kullanılıyor.
- Durum sınıfı Component<TState> ile bağlanıyor ve değişiklikler SetState ile yapılıyor.
- Alt bileşen parametreleri [Prop] attribute'uyla tanımlanıyor; partial sınıf gerekiyor çünkü fluent metotları kod üretici oluşturuyor.
- OnMounted yalnızca bileşen ilk gösterildiğinde bir kez çağrılır, ilk veri yüklemesi için uygundur.
- MauiReactor resmi .NET MAUI desteğine sahip değil; üretim kararı vermeden önce bunu değerlendirin.
MauiReactor, .NET MAUI için component tabanlı bir UI kütüphanesi olup MVU desenini kullanır. Durum (state) tek yerden güncellenir, View bu durumdan yeniden üretilir ve arayüz bindingsiz, akıcı (fluent) C# koduyla tanımlanır. Yazar, bu yaklaşımı XAML ve MVVM ile karşılaştırarak tek yönlü veri akışının nasıl çalıştığını anlatıyor.
Yazıda Reactor.Maui NuGet paketi ve maui-reactor-startup şablonu ile bir proje kurulumu, Component ve Component<TState> ile stateless ve stateful bileşenler, OnMounted yaşam döngüsü ve [Prop] attribute'uyla alt bileşen parametreleri ele alınıyor. SetState çağrısının bileşeni yeniden render ettiğini ve yalnızca farkların native kontrollere uygulandığını görüyorsunuz. Resmi .NET MAUI ekibinin desteği olmayan bir proje olduğunu aklınızda tutun.
Gerçek dünyada kullanımı
- XAML ve binding yerine C# ile yazılmış, durumu sık değişen bir .NET MAUI formu (ör. alışkanlık, sayaç veya görev listesi).
- React veya Flutter gibi bileşen tabanlı bir zihniyete alışkın ekiplerin .NET MAUI'de tek yönlü veri akışıyla çalışması.
- Tekrar kullanılabilir kart bileşenleri olan, liste ağırlıklı bir mobil uygulama.
Neden önemli
MVVM yerine MVU ile çalışmak, binding ve event tabanlı güncellemeleri bir SetState akışıyla değiştirir; bu, durum yönetimini daha öngörülebilir kılabilir. Ancak proje resmi .NET MAUI desteği dışında olduğu için üretim kararlarında bağımlılık riskini hesaba katmak gerekir.
Benzer haberler
- C# 14 extension member'ları: derleyicinin uyarmadığı gölgeleme hatasıDEV Community: #csharp1 gün önce
- .NET 10 + Pinecone: vektör veritabanı entegrasyonuDEV Community: #dotnet1 gün önce
- C# interface'lerinde collection dönüş tipleri: interface, view ve snapshot farkıNick Cosentino (Dev Leader)2 gün önce