2015-08-17 32 views
9

Redux ile karmaşık bir tam dinamik uygulama oluşturmaya çalışıyorum. Uygulamamın, anında oluşturulan alan bileşenleriyle dinamik olarak oluşturulmuş formları var. Redux mağazamdaki görsel verilerimi de bileşenlerimle ilgili olarak saklamak istiyorum. Ama görsel veri verileriyle gerçek verileri karıştırmadan nasıl yapmalıyım? ÖrneğinYeniden yapılandırma veri yapılandırması

i O ı ilk görsel veri aramak gerekir, çünkü bileşen işlemek zor olan bu

Store { 
    visual: {...deeply nested visual-data-tree...}, 
    data: {...deeply-nested real-data-tree...} 
} 

benzeri bir yapı, daha sonra iki ağaç bileşeni "değeri" tepki varsa. buna benzer bir yapıya sahip olmadığını

Ama: Sorun görmek

Store { 
    form { 
    visual: {...form visual data...}, 
    data: { 
     //Ok here the form "data" - widgets. Or it must to be visual? :) 
     widget1 { 
     visual: {type:"ComboBox", opened: true}, 
     data: 1 
     } 
    } 
    } 
} 

, şimdi Formu widget gerçek veriler içindeki görsel veriler var.

(formu - veri - WIDGET1 - görsel) gerçek veri kavramının dışında iç

görsel veri.

Verileri karıştırmanın aynı problemlerini nasıl çözersiniz?

Kötü ingilizcem için gerçekten üzüldüm. Umarım sorunu açık bir şekilde açıkladım.

+1

Bu şu anda Redux topluluğunda tartışılıyor - burada ilerlemeyi/tartışmayı https://github.com/rackt/redux/issues/159 adresinde izleyebilirsiniz. –

+0

Yanıt için teşekkürler, bu yüzden onu izleyeceğim – Hassaki

cevap

14

Bu ayrım yüzeysel değil midir? Bence daha önemli bir kural, devletteki verilerin normalleştirilmesi gerektiğidir. Örneğin, kullanıcıları tercih etmesini Combobox widget'ı varsa, verileriniz daha iyi şekil veri devlet ağacında çoğaltılır ise

{ 
    chosenUserId: 10, // Good! 
    users: { 
    10: { name: 'Alice' } 
} 

yerine

{ 
    chosenUser: { name: 'Alice' }, // Bad! 
    users: { 
    10: { name: 'Alice' } 
} 

olmak, doğru güncellemek için zor ve tutarsızlıkları önlemek.

Verileri normal tuttuğunuz sürece, visual ve data'u bölme gereği duymuyorum. Bir veritabanı gibi görünen üst düzey varlık önbelleğine sahip olmak isteyebilirsiniz (örn. users, posts veya posts dahil olmak üzere entities ya da uygulamanızın kullandığı herhangi bir veri nesnesi), ancak bunun dışında, ilgili durumu alırken en iyi hissedilen durum şekilleri ile en iyi şekilde geçin. belirtmek, bildirmek.

+0

Verileri normal olarak DOM'a veri oluştururken normalleştirilmiş verilerden yuvalanmış bir yapıya nasıl gidileceğini öğrenmek kolay mı? –

+0

Sadece [seçiciler] (http://redux.js.org/docs/recipes/ComputingDerivedData.html) yazıp bunları "mapStateToProps" bileşenlerinden kullanıyorum. –

+0

Evet, temelde şu anda yapıyorum. Bunun bir şekilde otomatik hale gelip gelmeyeceğini merak ediyordum. Örneğin, varlık kimliklerini gerçek nesneler ile değiştirecek olan normalizr.denormalize() 'gibi bir şey uygulayarak (yalnızca görüntüleme için görüntülemeye geçmeden önce kullanılır). –