سلام دوستان
مشکلی که برای من به وجود اومده این هستش که زمانی که fetch شروع میکنه به دریافت اطلاعات تا گرفتن response اگر روی button تاچ کنید اون button کار نمی کنه...
راه حلی برای این مشکل دارید؟
@hesammousavi
تابعی که fetch داخل اون قرار داره رو داخل componentDidMount صداش میکنم
شاید پاسخ شما همینجا باشد
سعی کنید جهت راهنمایی گرفتن کدهای مربوطه رو برای سایرین قرار بدین.
اینطوری حل مسئله راحت تر میشه.
componentDidMount() {
this.refreshFlatList();
}
refreshFlatList = () => {
let temp = [{key: 'page', value: 1}, {key: 'page_size', value: 50}];
temp.push({key: 'qf_state', value: this.props.myCity.id});
this.getAdsData(temp, true);
};
getAdsData(queryParameter, isRefresh) {
if (isRefresh) {
if (!this.state.isRefreshing) {
this.setState({isRefreshing: true});
}
} else {
this.setState({isLoading: true});
}
let url = domain + post_values_v4 + keyValueToParams(queryParameter);
let httpOptions = {
headers: {
'Authorization': this.props.token,
},
method: 'GET',
};
fetch(url, httpOptions).then((response) => {
return response.json();
}).then((responseData) => {
this.setState({
adsFlatListData: responseData.content,
isRefreshing: false,
isLoading: false,
});
}).catch((error) => {
this.setState({
isRefreshing: false,
isLoading: false,
});
})
}
render(){
return (
<FlatList
data={this.state.adsFlatListData}
keyExtractor={(item, index) => String(index)}
refreshControl={
<RefreshControl
refreshing={this.state.isRefreshing}
onRefresh={() => {
this.refreshFlatList()
}}
/>
}
renderItem={({item, index}) => {
return <AdsListPure item={item}
index={index}
onPress={() => {
this.onRowPress(item)
}}/>
}}
/>
);
}