Flux mimarisi, Mağaza ömrü nasıl başarıyorsun?
Flux hakkında okuyorum ama example Todo app bana bazı temel noktaları anlamak için çok basit olduğunu.
Bu Facebook gibi tek sayfalık bir uygulama düşününkullanıcı profil sayfaları. Her kullanıcının profil sayfasında, bazı kullanıcı bilgileri ve son mesaj, sonsuz kaydırma ile göstermek istiyoruz. Bir kullanıcının başka bir profil yönümüzü tayin edebiliriz.
Flux mimarisi, bu nasıl Saklar ve Memurları karşılık olur?
Kullanın PostStore
kullanıcı başına ki, ya da genel bir mağaza var ki? Ne memurları hakkında, her biri için yeni bir Dağıtıcı oluşturmak istiyoruz “kullanıcı sayfası”, veya bir singleton kullanmak istiyorsunuz? Son olarak, " mimarlık “sayfa özel” rota yanıt Mağazalarında değişim? yaşam döngüsü yönetimi sorumludur
Ayrıca, sözde sayfa bir tek aynı türde verilerin birden fazla liste olabilir. Profil sayfasında, örneğin, her ikisi de göstermek istiyorumTakipçileriveİzler. Nasıl bir tek bu durumda UserStore
çalışabilir? UserPageStore
followedBy: UserStore
follows: UserStore
yönetmek istiyorsunuz?
CEVAP
Akı bir uygulama sadece bir Dağıtıcı olmalı. Tüm verilere bu merkez üzerinden akar. Tek bir Dağıtıcı olan tüm Mağaza yönetmek için izin verir. Bu #1 kendini günceller, ve sonra #2 #1 Mağaza devleti her Eylem ve kendisine göre Saklamak zorunda Deposu ihtiyacınız olduğunda önemli hale gelir. Akı bu durum büyük bir uygulamada bir ihtimal olduğunu varsayar. Bu, ideal bir durum olmasına gerek yoktur, ve geliştiriciler mümkünse bu karmaşıklığı önlemek için gayret göstermelisiniz. Ama tek Dağıtıcı zamanı geldiğinde hazır.
Mağaza tekiz. Ve mümkün olduğunca bağımsız ayrılmış müstakil bir sorgu bu evrenden bir Denetleyicisi-Görünüm -- kalmalıdır. Mağazaya tek yol Dağıtıcısı ile kaydeder geri geçer. Tek yol dışarı getter fonksiyonları ile. Mağazalar da kontrol Manzaralı yeni devlet, alıcılar kullanarak sorgulamak için zaman bilmek böylece onların durumu değiştiğinde bir olay yayınlayın.
Örnek uygulama PostStore
Bir tek orada olurdu. Bu aynı bir mağaza "(sahte sayfa) bunun gibi daha FB mesajlarını farklı kullanıcıların görüntülendiği Haber," dedi. sayfadaki mesajları yönetmek olabilir Mantıksal etki mesaj listesi ve mesaj herhangi bir liste işleyebilir. Sözde sayfasından sözde sayfaya hareket ettiğimizde, deposu durumu yeni durumu yansıtacak şekilde yeniden başlatmak istiyoruz. Biz belki de istiyorum önbellek önceki devlet localStorage olarak bir iyileştirme için hareket ileri ve geri arasında sözde sayfaları, ama hevesim olurdu kurma PageStore
bekler için tüm diğer depolar, yönetir ilişki ile localStorage için tüm mağazaları pseudo-sayfa ve sonra güncelleştirmeleri kendi devlet. PageStore
PostStore
etki alanı olan mesaj hakkında bir şey saklamak anlamına gelir. Sadece sözde sayfaları kendi etki, çünkü sahte bir sayfa belirli bir önbelleğe olup olmadığını ya da değil, biliyorum.
PostStore
initialize()
bir yöntem olurdu. Bu yöntem, her zaman bu ilk başlatma ve Eylem yoluyla alınan verilere dayalı bir devlet oluşturmak, Dağıtıcı ile bile eski Devlet temizleyin. Başka bir sözde sayfasından hareketli muhtemelen initialize()
çağırma tetikleyecek PAGE_UPDATE
bir eylem, içerecektir. Yerel önbellekten veri alma, sunucudan veri alma, işleme ve iyimser XHR hata Devletleri etrafında gereken detaylar var, ama bu genel bir fikir.
Pseudo-sayfa belirli bir uygulamanın tüm Depolar ihtiyacı var mı yoksa tamamen kullanılmamış olanları, bellek kısıtlamaları dışında yok etmek için herhangi bir neden olup olmadığından emin değilim. Ama mağazalarda genellikle bellek çok tüketmek yok. Sadece kontrol Manzarası yok olayın içinde dinleyicileri kaldırmak için emin olmak gerekir. Bu componentWillUnmount()
yöntem Tepki yapılır.
Çözmek için nasıl "Eklenti yürütm...
Eğer DİNLENMEK uygulamaları vatansız o...
Nasıl github üzerinde gists başarıyors...
Nasıl mağaza değişkenler için Açısal $...
Nasıl iOS 5 ile armv6 ve armv7 mimaris...