1
リフレッシュするときにエラーが発生する。 ListViewのRefreshControlが何らかの不明な理由で機能しない
コードが間違って起こっているthis-
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>
)
},
のようなものでしょうか?私はギブスで何かを見つけることができません。 何が問題になりますか?私はギブスで何かを見つけることができません。
こんにちは更新
。 rnplayでサンプルを作成していただきありがとうございます。しかし、私はRefreshControl
とListView
をrender()
の中に使用するときはいつも、問題の原因を絞り込んで、期待どおりに動作します。しかしListView
とRefreshControl
をrenderlistView()
のような他の機能から返すと、上記のエラーが発生します。私もthis.loadData().bind(this)
を試してみましたが、それでもどちらも役に立ちません。
これは3日前に修正されました。このgit commitを参照してください:https://github.com/facebook/react-native/commit/eac617d6ee74fb20cd69fdbc78a77ee07f5e6ba3 –