2016-03-04 15 views
7

, ben onlardan aşağıda bileşenin durumunu değiştirmek şöyle bazıları birbirinin üzerine itilir birkaç bileşeni vardır: -> Gruplar -navigator.pop() çalıştırdıktan sonra React durumunu nasıl yenilerim? Yerli Tepki ile çalışırken

Sosyal> Grup

ekle

Ancak, bir önceki bileşene geri dönmek için (örneğin, bir kullanıcının hesabına bir grup ekledikten sonra) navigator.pop() çalıştırdığımda, altındaki bileşen (bu durumda, 'Gruplar') en son durumla yenilenmez. .

Burada yanlış olan ne yapıyorum? hangi

componentWillUpdate() { 
    this.loadGroupsData(); 
} 

...:

+0

Bunun, navigasyon cihazıyla bir ilgisi olduğunu sanmıyorum. Bir reereyi tetikleyeceği için en üstteki bileşenin durumunu değiştirmelisiniz. –

cevap

3

, yani her Gruplar bileşen güncellendiğinde, tetikler ben 'Gruplar' bileşeni üzerinde bir componentWillUpdate ekleyerek bu çözebilecek bir loadGroupsData fonksiyonunu çıkıyor loadGroupsData işlevi, tüm farklılıkları denetler ve varsa, aşağıdakileri yükler:

loadGroupsData() { 
api.getUserGroups(this.state.userId, (data) => { 
    data.forEach((group, index) => { 
    group.groupname = group.groupname; 
    }); 
    if (this.state.dataSource._cachedRowCount === undefined || this.state.dataSource._cachedRowCount !== data.length) { 
    this.setState({ 
     usersGroups: data.map(data => data.groupname), 
     dataSource: this.state.dataSource.cloneWithRows(data), 
     loaded: true, 
    }); 
    } 
});} 
+3

State'ı componentWillUpdate işlevine ayarlayabileceğinizi düşünmüyorum. Tepki yerel belgeler diyor. Not: Bu yöntemde this.setState() yöntemini kullanamazsınız. Bir değişiklik değişikliğine yanıt olarak durumu güncellemeniz gerekiyorsa, bunun yerine componentWillReceiveProps kullanın. https://facebook.github.io/react/docs/component-specs.html –

+1

setState'i componentWillUpdate'e koyarsam sonsuz çağrıları alırsınız, nasıl önlenirsiniz? – jatazoulja

İlgili konular