سلام من از کد زیر برای گرفتن اطلاعات از api استفاده میکنم
get_detail(URL) {
fetch(URL,{
method: 'POST',
headers: {
'Authorization': "Token "+ this.state.token,
'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'accept-language': this.state.lan
},
body:'id='+this.state.id
})
.then((response) => response.json())
.then((responseJson) => {
this.setState({
refreshing: false,
bookmarkIcon:`${responseJson.is_booked ? 'bookmark' : 'bookmark-border'}`,
likeIcon:`${responseJson.is_liked ? 'favorite' : 'favorite-border'}`,
dataIT: responseJson,
});
this.parsResponse(responseJson);
})
.catch((error) => {
Alert.alert("error_get_detail","" + error);
});
}
حالا responseJson توی زمان منطقی دریافت میشه ولی setState خیلی دیر انجام میشه و با تاخیر خییییلی زیاد مقدار جدید Icon ها اعمال میشه
چیکار باید کنم که سریع تر اطلاعات load بشه توی صفحه؟
ممنون
@mjsolgi
تابع fetch که شما ازش استفاده میکنید٬ در واقع Promise-Based هست. یعنی هنگامی که شما این درخواست رو به سرور میفرستید بلافاصله جواب رو دریافت نمیکنید.
حدودا ۲۰۰ms یا بیشتر طول میکشه که سرور به درخواست سما پاسخ بده.
و ۱ سوال: در کجای کدتون از تابع get_details استفاده میکنید؟
جای صحیح برای درخواست اجکس معمولا componentDidMount هست و در برخی موارد هم constructor
@ali.bayat
بله میدونم برای همین گفتم response توی زمان منطقی (شاید همون 200ms) دریافت میشه
ولی لود شدن و به روز شدن اطلاعات که با setState انجام میشه تاخیر داره
منم تابع get_details تا رو داخل componentDidMount استفاده میکنم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟