1

Yenilemek için aşağı çekerken bir hata alıyorum. enter image description hereListView'te RefreshControl bilinmeyen bir nedenle çalışmıyor

kodu yanlış neler oluyor bu-

loadData: function(){ 

    var _this = this; 
    this.API(); 

    //check if data is loaded 
    setTimeout(function(){ 
     if(_this.isMounted()){ 
      if(_this.state.loaded===false){ 
       _this.setState({ 
        isReloadRequired: true 
       }) 
      } 
     } 
    }, 10000); 
}, 
API: function(){ 

    var _this = this; 
    this.setState({ rawData: [], isReloadRequired: false, loaded: false, isRefreshing: true }); 

    Parse.Cloud.run('fetchBookingListForUserCloudFunction', { 
     user_id: Parse.User.current().getUsername() 
    }).then(

     function(result){ 
      var cleanData = []; 
      for(var i=0;i<result.length;i++){ 
       cleanData.push(result[i].toJSON()); 
      } 

      _this.setState({ 
       rawData: _this.state.rawData.concat(cleanData), 
       dataSource: _this.state.dataSource.cloneWithRows(cleanData), 
       loaded: true, 
       isReloadRequired: false, 
       isRefreshing: false, 
      }); 
     }, 
     function(error){ 
      _this.setState({ isReloadRequired: true, loaded: false, isRefreshing: false }) 
      console.log("[HOME API] Error: "+ JSON.stringify(error, null, 2)); 
     } 
    ); 
}, 
render: function(){ 
    return(
     {this.state.loaded ? this.renderListView() : this.renderLoadingView()} 
    ) 
}, 

renderListView: function(){ 
    if(this.state.rawData.length === 0){ 
     return(
      <View style={styles.container}> 
       <Text>Tap to book.</Text> 
      </View> 
     ); 
    } 
    return(
     <ListView 
      dataSource={this.state.dataSource} 
      renderRow={this.renderReservation} 
      style={styles.listView} 
      refreshControl={ 
       <RefreshControl 
        refreshing={this.state.isRefreshing} 
        onRefresh={this.loadData} 
       /> 
      } 
     /> 
    );   
}, 

renderLoadingView: function(){ 
    return(
     <View style={styles.container}> 
      <LoadingView /> 
     </View> 
    ) 
}, 

gibi bir şey? Github'da da hiçbir şey bulamıyorum. Neler yanlış gidiyor? Github'da da hiçbir şey bulamıyorum.

Merhaba GÜNCELLEME. Rnplay'de örnek oluşturduğunuz için teşekkür ederiz. Ama ben bu sorunun nedenini daralttım. render() içinde RefreshControl ve ListView kullanıyorum, beklendiği gibi çalışır. Ancak, renderlistView() gibi başka bir işlevden RefreshControl ile döndüğümde, yukarıda belirtilen hatayı atar. Hatta this.loadData().bind(this)'u denedim ama bu da işe yaramıyor.

+0

Bu, 3 gün önce düzeltildi. Şu git işlemini gerçekleştirin: https://github.com/facebook/react-native/commit/eac617d6ee74fb20cd69fdbc78a77ee07f5e6ba3 –

cevap

0

LoadData işlevinizi bağlamayı unuttun mu? onRefresh={this.loadData.bind(this)} loadData işlevini görmeden karar veremiyorum, ancak bunun nedeni bu olabilir. https://rnplay.org/apps/h-rK5g

Benzer sizin örneğe:

Şöyle ya da (Tam kod olmadığı için bazı şeyler basitleştirilmiş) Yukarıdaki kod bağlı kalarak daha az bir çalışma örneği yaptık

Güncellendi bir sunucudan (burada bir sahte json bitiş noktası) veri getiriyor ve listeyi güncellemek için sonucu kullanıyor.

Durumu ayarlamadan önce cleanData'nizin tam olarak yüklenip yüklenmediğini kontrol edebilirsiniz (for döngüsünden ve toJSON() çağrılarından sonra)?

+0

Tamam. Cevabımı loadData ile bir süre içinde düzenleyeceğim. Ancak, 'load' ile loadData bağlama, bağlamanın gerekli olmadığını belirten bir uyarı gösterir. – Mihir

+0

Merhaba. Cevabı güncelledim. – Mihir

+0

@Mihir Yanıtı güncellendi –

İlgili konular