تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ امینه قاضی زاده
علت استفاده از .then
جامعه ری اکت ایجاد شده در ۳۱ خرداد ۱۴۰۱

با سلام

میخواستم بدونم چرا در متد componentdidMount برای این که بتونییم به پست‌های دریافت شده دسترسی داشته بشیم باید از then استفاده کنیم مثلا چرا نمیشه مقدار بازگشتی از this.getPost() رو در یک متغیر قرار بدیم بعدش با استفاده از setState اونواعمال کنیم به state

سوال بعدی هم در مورد این هست که در هنگام مقدار دهی به posts در setState

this.GetPost().then(posts=>this.setState({posts,currentpost:0}))

به صورت بالا چطور ریکت متوجه میشه که باید posts رو درون استیت پست قرار بده ؟ یعنی به خاطر این که هم نامش هست متوجه میشه یا دلیل دیگه ای داره

ممنونم

سلام وقتتون بخیر .

در مورد سوال اول : در اینجا ما چون داریم یک عملیات async انجام میدیم و این عملیات با کمی تاخیر نسبت به جریان اصلی برنامه اجرا میشه برای اینکه مقدار برگشته از تابع رو داشته باشیم نمیشه از روش‌های معمولی (sync) استفاده کرد . برای این کار روش‌های مختلفی وجود داره که یکیش استفاده از promise‌ها هستند . به طور خلاصه اگر براتون بگم ما در تابع then به برنامه میگیم هر وقت که این عملیات async (غیر همزمان) انجام شد مقدار برگشت داده شده رو به ما بده .

در مورد عملیات‌های async اینجا رو مطالعه کنید .

در مورد سوال دوم : این یه قاعده javascript هست که در مقدار دهی object‌ها اگر نام key با نام متغییری که می‌خوایم در key قرار بدیم یکی هست میتونیم از تکرار دوباره اون صرف نظر کنیم و فقط یکبار نام اون key رو بنویسیم . در واقع کد این بخش معادل کد زیر هست :

this.GetPost().then(posts=>this.setState({
 posts:posts,
 currentpost:0
}))

موفق باشید .

بهترین پاسخ
علیرضا ایمانی ۳۱ خرداد ۱۴۰۱، ۱۹:۰۵