Mobx

2016-04-29 9 views
8
nasıl yapılandırılır

Uygulamamın nasıl yapılandırılacağını anlamaya çalışıyorum, örneğin, bir model Kullanıcı, tüm kullanıcıları yüklemeyi sürdürmek için genel bir UserStore ve FriendList, PendingFriendList gibi bazı UI ilişkili mağazalar var. vb gibi BlockedUserList, LikedUserList:Mobx

class User { 
    id; 
    @observable name; 
    @observable avatar; 
    // others functions and fields 
} 

class UserStore { 
    @observable users = []; 
    function resolve(id) { /*return by id*/} 
    function createOrUpdateUser(json) { /* add user to this.users */ } 
} 

class FriendStore { 
    @observable users = []; 
    hasNextPage = true; 
    currentPage = null; 

    function loadNextPage(page) { 
    api.loadFriends(page >= 0 ? page : this.currentPage + 1).then(users => { 
     users.forEach(user => { 
     this.users.push(UserStore.createOrUpdateUser(user)) 
     }) 
    }) 
    } 
} 

class PendingFriendUsers { 
    @observable users = []; 
    @observable query = null; 
    hasNextPage = true; 
    currentPage = null; 

    function loadNextPage(page) { 
    // more or less like FriendStore 
    } 
} 

class BlockedUserStore { 
    // more or less like FriendStore 
} 

sorum şu: ölüm yolu bu mu? Yoksa daha iyi bir yolu var mı?

+0

Yasal Uyarı: Depodaki yazarı değilim https://github.com/rwieruch/react-mobx -soundcloud, ama belki de gerçek bir dünya uygulaması için en az boilerplate klasör yapısı bir uygulamanın nasıl yapılandırılabileceğini biraz daha fazla bilgi verir. –

+0

Daha büyük bir gerçek dünya MobX App: https: // github.com/rwieruch/favesound-mobx –

cevap

8

Muhtemelen zaten fark ettiğiniz gibi, MobX mağazaların nasıl yapılacağını tarif etmiyor, bu yüzden birçok yaklaşım mümkün. Şahsen ben gerçekten bu şekilde kabaca kurardım (docs'daki önerilen mağaza kurulumuna benzer). Belki biraz modası geçmiş ama imho'yu takip etmek kolay, endişelerin açık bir şekilde ayrılmasıyla ölçeklenebilir bir model. Alternatif yaklaşımlar mobx-reactor

Küçük ucu gibi ilgili projelerde bu example repo veya bulunabilir: En api geri arama tüm değişiklikleri herhangi gözlemciler bildirilir önce bir kez uygulanır, böylece transaction kullanmak içinde.

8

Bazı projelerde Mobx & tepki ile çalıştım, bu yüzden bu yapı benim için en uygun olanını buldum.

Mağazaları

  • Alan Mağazaları
    • verileri saklar uygulamanızda gerekli which'll. Ex için
      . kullanıcı verileri
  • Görünüm Mağazaları
    • verileri saklar uygulamanızı ex
      sunmak gerekli which'll. yükleme, hata değişkenleri

Modelleri Burada

  • veri modelleridir eski kullanıcı modeli için

Hizmetleri Burada

  • yapabilirsiniz tanımlayabilirsiniz hizmetleri, api çağrıları yapmak

Bileşenleri

  • Konteyner veya Akıllı Bileşen
  • Salak veya sunum bileşen
+1

?? Yapınızdaki bir UserStore ve bir UserModel arasındaki fark nedir? – AlxVallejo

+0

UserModel, kendi özellikleri ve bazı işlevleri olan basit bir sınıftır. –

+0

wut için . Bazı örneklerin burada uzun bir yol olacağını düşünüyorum. O zamandan beri, Mobx ile bazı mantıksızlıklar nedeniyle Redux'a geçtim. Redux'da, kullandığınız mağaza için bir varsayılan "model" belirleyebilir ve bunları aynı dosyada tutabilirsiniz. Bir modeli o model için varsayılan durum olarak tanımlarsanız, mağazaya varsayılan durum olarak ekledim. – AlxVallejo