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

نمیشد به جای اینکه setState رو داخل تابع tick قرار بدیم، مثل state، مستقیما objectی رو براش تعریف می‌کردیم؟ مثلا:

{date: new Date} = this.setState

اصلا چرا باید setState داخل تابع دیگه ای باشه و چرا باید خودش هم تابع باشه؟

سلام

دلیل اینکه مستقیما مقدار state رو تغییر نمیدیم برمیگرده با ساختار خود react

اگر مستقیم اون رو تغییر بدیم react به درستی متوجه تغییرات اون نمیشه و نمیتونه به درستی تغییرات ما رو اعمال بکن و برای همین باید از تابع setState استفاده بکنیم. در دقیقه ۱۷:۳۰ هم به این مورد اشاره شده


اگر مورد دیگه مد نظرتون بود لطفا اعلام بکنید که بیشتر توضیح بدم

مجتبی سوری ۱۳ فروردین ۱۴۰۱، ۱۵:۲۳

ممنون آقای سوری

در واقع سوالم این بود چرا setState رو باید حتما در قالب تابعی مثل tick تغریف کرد؟ نمیشد مستفیم از خود setState استفاده کرد؟ مثلا شما برای state اون رو داخل هیج تابعی قرار ندادید و مستقیما ازش استفاده کردید، برای setState همچین کاری مقدور هست؟

سینا محمدی ۱۳ فروردین ۱۴۰۱، ۱۵:۴۳

چند تا دلیل داره این مورد

اولین دلیل این که چون هنوز کامپوننت mount نشده نمیتونیم نمیتونیم از setState استفاده بکنیم

ورودی تابع setInterval باید یک تابع یا رفرنس به یک تابع باشه پس باید رو یا به همین صورت پاس بدیم یا از یک arrow function استفاده بکنیم

بحث خوانایی کد هم مطرح! چون با دیدن اسم tick یا حالا حتی اسم مناسب‌تر هر کسی کد ما رو بخونه میتونه متوجه بشه که چه لاجیکی رو داریم پیاده سازی میکنیم


در آخر ذکر یک نکته حیلی مهم هست به هیچ عنوان نحوه کدنویسی مهم نیست همه مواردی که مطرح میشه صرفا به عنوان مثال هستن اگر شما به هر طریق مشابه دیگه هم بتونید به هدفتون برسید اون روش هم میتونه درست باشه

بهترین پاسخ
مجتبی سوری ۱۳ فروردین ۱۴۰۱، ۱۵:۵۹