react چیست و ما در چه مرحله و زمانی به React نیاز داریم؟
مطمئنا میدانید چه زمانی به HTML و CSS نیاز دارید، تمام وب برپایه HTML و بخش مهمی از آن CSS است. فکر کردن به اینکه چه زمانی به جاوااسکریپت نیاز خواهید داشت نیز موضوعی ساده است، وقتی که بخواهید قابلیت تعاملی به صفحات یا کاربردهای مشخص دیگری را اضافه کنید، از آن بهره میگیرید. البته وقتی که قصد استفاده از کتابخانهها را نیز دارید، استفاده از آن اجباری است. برای مثال ما از جیکوئری برای دسترسی سادهتر و بهتر به DOM استفاده میکنیم، کتابخانهای که کاملا مبتنی بر جاوااسکریپت است. وقتی که نیاز پیدا کردن به چنین کتابخانههایی کم شد و به صورت ناگهانی خیل عظیمی از فریمورکهای جدید بوجود آمد، دیگر استفاده از هرکدام آنها برای ما ساده و واضح نبود. ما در چه مرحله و زمانی به React نیاز داریم؟ در بسیاری مواقع من از ریاکت تنها زمانی استفاده میکنم که بخواهم چیزهای بزرگی را با جاوااسکریپت پیادهسازی کنم. در کنار این مواردی مانند Vue، Ember و… نیز هست. متوجه این قضیه هستیم که این موارد مشابه هم نیستند اما مهم آن است که بدانید این موارد میتوانند همگی تقریبا یک خروجی را برای شما داشته باشند.
در بسیاری مواقع من از ریاکت تنها زمانی استفاده میکنم که بخواهم چیزهای بزرگی را با جاوااسکریپت پیادهسازی کنم. در کنار این مواردی مانند Vue، Ember و… نیز هست. متوجه این قضیه هستیم که این موارد مشابه هم نیستند اما مهم آن است که بدانید این موارد میتوانند همگی تقریبا یک خروجی را برای شما داشته باشند.
در زیر میتوانید دلایل صحیح و اشتباه برای استفاده از این فریمورک را مشاهده کنید.
صحیح : بدلیل وجود تعداد زیادی از حالتها البته ممکن است حالت کلمهای تا حدی نامفهوم باشد، اما منظور من مواردی مانند زیر است: کدام گزینه از منو ناوبری فعال است. کدام دکمه فعال و یا غیر فعال است. مقدار داخل یک ورودی چیست. کدام منو انتخابی آکاردئونی، انتخاب شده است. چه زمانی یک قسمت بارگذاری میشود. چه کاربری وارد شده و به چه تیمی تعلق دارد. آیا موردی که کاربر روی آن کار میکند منتشر شده یا در حالت پیشنویس است. این حالتها میتواند مستقیما به خود محتوا نیز مرتبط باشد : مشاهده تمام کامنتها روی یک پست و مشاهده تمام مربوط به آنها. وضعیت نمایش کنونی محتوا و تمام متادادههای آن. آرایهای از تمام مقالههای مرتبط و متادادههای آن. لیستی از نویسندهها. لاگی از جدیدترین فعالیتهای مربوط به هر کاربر. ریاکت به شما کمک نمیکند تا این وضعیتها را سازمان دهی کنید، تنها کاری که میکند این است که: من میدانم که میخواهید با وضعیت مواجه شوید، بنابراین تنها وضعیت را فراخوانی کن و از یک راه برنامهنویسی شده ورودی و خروجیهای آن را کنترل کن. قبل از پیش آمدن بحث ریاکت ممکن بود که فکر کنیم اینکارها با ریاکت انجام میشود اما واقعیت آن است که هیچ قاعده یا مفهوم مستقیمی برای این کار وجود ندارد.
ممکن است تا به حال این جمله را که میگوید «یک راه برای واقعیت وجود دارد» را شنیده باشید، بسیاری از وقتها ما با DOM نیز درست مانند این موضوع رفتار میکنیم که تنها راه دست یافتن به واقعیت است. برای مثال فکر کنید که میخواهید بدانید که یک فرم آیا قابلیت ارسال شدن دارد یا خیر. ممکن است برای چنین کاری از دستوری مانند $(".form input[type='submit']).is(":disabled") استفاده کنید. به این دلیل که تنها راه منطقی برای این کار بررسی کردن یک شرط خواهد بود که در نهایت منجر به فعال بودن یا نبودن یک دکمه میشود. بنابراین در این شرایط دکمه منبع اصلی برای دستیابی به واقعیت در اپلیکیشن شماست.
ریاکت در چنین شرایطی به ما کمک میکند که: در رابطه با تمام مواردی که با آنها در ارتباطیم فکر کنیم. وضعیتها همراه با مقداری از Json هستند پس کار کردن با آن سادهتر میشود و تکنولوژیهای Back-End نیز میتوانند با آن بهتر کار کنند. بهترین مورد این است که شما با ریاکت نیازی نیست که مستقیما با DOM کار کنید، شما HTML خود را میسازید و از React برای دسترسی به این نقطه از واقعیت کمک می خواهید. صحیح: برای مبارزه با اسپاگتی این موضوع به مواردی که تا به حال گفته شد بسیار مربوط است. کدنویسی اسپاگتی مربوط به زمانی است که ساختاربندی و سازماندهی کدهایتان بسیار سخت میشود. دوباره فرمی که روی وبسایتتان بود را تصور کنید. این فرم همراه با مقداری از قواعد منطقی و محاسباتی است (مخصوصا زمانی که با ورودیها کار میکنید). ممکن است برخی ورودی وجود داشته باشد که با تغییر دادن آن، محاسبات جدیدی را نمایش میدهد. پس در چنین شرایطی ممکن است به یک کتابخانه اعتبارسنجی نیاز داشته باشید. ممکن است بتوانید برای حل این مشکل کار دیگری نیز انجام دهید و آن این است که تا زمانی تمام کدهایتان بارگذاری میشوند، فرمتان را غیر فعال کنید. بعد از آن وقتی فرم فرستاده شد، دادههای درست ارسال شود و قسمت سرور وبسایت بتواند به درستی آن را مدیریت کند. هیچ اتفاق عجیبی رخ نمیدهد، اما ممکن است خیلی ساده شما را گیج کند.