طراحی انتخابگر تاریخ سفارشی در React – به زبان ساده

۲۵۳ بازدید
آخرین به‌روزرسانی: ۲۰ شهریور ۱۴۰۲
زمان مطالعه: ۵ دقیقه
دانلود PDF مقاله
طراحی انتخابگر تاریخ سفارشی در React – به زبان سادهطراحی انتخابگر تاریخ سفارشی در React – به زبان ساده

در این مقاله ساده‌ترین روش برای ساخت یک انتخابگر تاریخ سفارشی در React توضیح داده شده است. در این مسیر از emotion/core@ (+) و datepicker-react/hooks@ (+) استفاده می‌کنیم.

997696

نتیجه نهایی به صورت زیر خواهد بود:

انتخابگر تاریخ سفارشی در React

پیش‌فرض ما این است که شما با جاوا اسکریپت آشنا هستید و قبلاً کمی با React و قلاب‌های آن کار کرده‌اید. به جز آن هیچ پیش‌نیاز دیگری برای مطالعه این راهنما وجود ندارد.

گام 1: نصب وابستگی‌ها

ابتدا باید وابستگی‌های خود را نصب کنیم. چنان که پیش‌تر اشاره کردیم از emotion و datepicker-react/hooks@ استفاده می‌کنیم:

yarn add @emotion/core @datepicker-react/hooks

گام 2: چارچوب انتخابگر تاریخ

ما یک چارچوب (Context) برای اشتراک حالت انتخابگر تاریخ و callback-ها از طریق درخت کامپوننت انتخابگر تاریخ ایجاد خواهیم کرد. این Context روشی برای ارسال داده‌ها از طریق درخت کامپوننت بدون الزام به ارسال props به سمت پایین به صورت دستی در هر سطح تأمین می‌کند.

فایل datepickerContext.js

کد فوق یک شیء Context ایجاد می‌کند که شامل حالت پیش‌فرض و Callback-ها است. زمانی که ری‌اکت یک کامپوننت را رندر می‌کند که در این شیء Context مشترک شده است، شروع به خواندن مقدار چارچوب جاری از نزدیک‌ترین Provider مطابق بالا در درخت می‌کند. اگر یک Provider منطبق وجود نداشته باشند، Context جاری مقادیر پیش‌فرض را خواهد خواند.

گام 3: کامپوننت NavButton

در این گام یک دکمه ایجاد خواهیم کرد که به ما امکان می‌دهد تا در میان ماه‌ها حرکت کنیم. یک کامپوننت Button دو props دریافت می‌کند که یکی children و دیگری callback-ی به نام onClick است.

فایل NavButton.js

گام 4: کامپوننت Datepicker

این همان کامپوننت مرکزی ما است که شامل منطق انتخابگر تاریخ ما است. دستکاری تاریخ در جاوا اسکریپت کار چندان ساده‌ای نیست. به همین دلیل است که استفاده از کتابخانه‌هایی مانند moment ،date-fns و luxon رواج زیادی دارد.

خوشبختانه ما نیازی به استفاده از هیچ کدام آن‌ها نداریم چون از dapicker-react/hooks@ استفاده می‌کنیم که همه کارهای دشوار را به جای ما انجام می‌دهد. ما باید از قلاب صحیح استفاده کرده و آرگومان‌های مناسب را ارسال کنیم.

dapicker-react/hooks@ سه قلاب اکسپورت شده دارد:

  • useDatepicker
  • useMonth
  • useDay

از روی نام آن‌ها می‌توان کارکردشان را حدس زد. ما از useDatepicker در کامپوننت Datepicker استفاده خواهیم کرد. در ادامه کامپوننت Datepicker را برنامه‌نویسی می‌کنیم.

1. تعریف حالت

ابتدا باید تاریخ‌های آغاز و پایان را مدیریت کنیم که این کار با استفاده از قلاب useState قابل اجرا است.

فایل Datepicker.js

در ادامه مقدار حالت اولیه را تعیین می‌کنیم. در آغاز یک تاریخ آغاز و پایان خالی داریم. همچنین در حالت شیء با focusedInput مواجه می‌شویم که باید تعیین شود و در غیر این صورت باید تاریخ‌های آغاز و پایان معلوم شوند.

2. قلاب useDatepicker

آرگومان‌های مختلفی را که در بخش فوق دیدیم به قلاب useDatepicker ارسال می‌کنیم، اما صرفاً موارد الزام شده را می‌فرستیم. useDatepicker یک شیء بازگشت خواهد داد که شامل callback-ها و متغیرها است و برای مدیریت انتخابگر تاریخ نیاز داریم. برخی از آن‌ها به Context ارسال می‌شوند که در گام 2 دیدیم.

فایل Datepicker.js

3. کامپوننت Datepicker در نهایت به صورت زیر در می‌آید

فایل Datepicker.js

گام 5: کامپوننت Month

احتمالاً کامپوننت Month را که درون کامپوننت Datepicker قرار دارد مشاهده کرده‌اید. این کامپوننت سه prop به نام‌های year ،month و firstDayOfWeek می‌گیرد. همه این موارد به قلاب useMonth ارسال می‌شوند که روزهای ماه جاری، برچسب هفته و برچسب ماه را بازگشت می‌دهند:

فایل Month.js

گام 6: کامپوننت Day

اینک به پایان کار خود نزدیک شده‌ایم و کافی است یک کامپوننت دیگر به نام Day اضافه کنیم. این کامپوننت prop-هایی به نام date و dayLabel می‌گیرد. ما prop به نام date را همراه با callback-هایی از چارچوب انتخابگر تاریخ به قلاب useDay ارسال می‌کنیم.

فایل Day.js

سخن پایانی

اینک شما موفق شده‌اید یک کامپوننت ابتدایی انتخابگر تاریخ بسازید و بدین ترتیب درکی مقدماتی از context و قلاب‌های React به دست آورده‌اید.

ما تلاش کردیم نشان دهیم که انجام این کار با بهره‌گیری از کتابخانه datepicker-react/hooks@ تا چه حد آسان است. اگر می‌خواهید آن را به نوع تقویم‌های دیگر توسعه دهید، آن را دسترس‌پذیر بسازید و یا به حالت مناسب برای موبایل درآورید، می‌توانید از کتابخانه datepicker-react/style@ (+) استفاده کنید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
front-end-weekly
دانلود PDF مقاله
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *