نمیشد به جای اینکه 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 یا حالا حتی اسم مناسبتر هر کسی کد ما رو بخونه میتونه متوجه بشه که چه لاجیکی رو داریم پیاده سازی میکنیم
در آخر ذکر یک نکته حیلی مهم هست به هیچ عنوان نحوه کدنویسی مهم نیست همه مواردی که مطرح میشه صرفا به عنوان مثال هستن اگر شما به هر طریق مشابه دیگه هم بتونید به هدفتون برسید اون روش هم میتونه درست باشه