راه اندازی پکیج Router و آماده سازی پروژه برای Routing

خرید بک لینک

راه اندازی پکیج Router

حالا که با مفهوم Routing آشنا شده ایم باید پکیج Router مورد نظرمان را راه اندازی کنیم. برای این کار ترمینال خود را در صفحه ی اصلی پروژه تان باز کرده و دستور زیر را در آن تایپ کنید:

بله همانطور که می بینید به دو پکیج متفاوت نیاز داریم:

  • پکیج react-router که منطق عملیات routing را در خود دارد.
  • پکیج react-router-dom که کار نمایش محتوا درون مرورگر را بر عهده دارد.

این دو پکیج توسط فیسبوک ساخته نشده اند اما مشهورترین پکیج برای routing در react می باشند. پس از تمام شدن نصب دو پکیج، دوباره دستور npm start را اجرا کنید تا سرور مجازی شروع به کار کند.

نکته ی بسیار مهم: در ورژن های جدید react-router دیگر نیازی به نصب هر دو پکیج نیست. اگر کار شما فقط توسعه ی وب است (طراحی سایت و مسائل مرتبط با آن) فقط به پکیج react-router-dom نیاز خواهید داشت چرا که react-router را درون خود دارد. من هر دو را به شما نشان دادم تا بدانید در ورژن های قدیمی موضوع فرق میکرده است.

اولین کاری که باید انجام دهیم این است که فقط پست ها (قسمت عناوین پست ها) در صفحه ی اصلی برنامه نمایش داده شوند. در حال حاضر در Blog.js ما تمام موارد را در صفحه ی اصلی نمایش می دهیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکانپذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

حالا باید routing را در برنامه ی خودمان فعال کنید؛ شما میتوانید این کار را درون index.js یا App.js انجام دهید. من App.js را انتخاب کرده ام بنابراین وارد این فایل شده و دستور import زیر را به آن اضافه می کنم:

حالا باید تمام برنامه تان را درون این BrowserRouter قرار دهید. بنابراین در همان App.js و در قسمت retu آن، div ریشه ای را درون عنصر BrowserRouter قرار می دهم:

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

برای شروع کار دستورات import مربوط به FullPost و NewPost و Post را از فایل Blog.js حذف کنید چرا که نیازی به آن ها نخواهیم داشت. حالا پوشه های FullPost و NewPost را به درون پوشه ی Blog منتقل می کنم. سپس درون همان پوشه ی Blog یک پوشه ی دیگر به نام Posts می سازم که درون خود فایلی به نام Posts.js دارد. سپس از قسمت JSX در فایل Blog.js کدهای مربوط به نمایش Post را کات می کنیم. منظورم این قسمت است:

در مرحله ی بعد وارد فایل Posts.js می شویم و آن را به صورت یک کامپوننت کلاس-محور تکمیل می کنیم:

بله کدهایی که کات کرده بودیم را در این قسمت paste کرده ایم. البته یک مشکل وجود دارد؛ در این فایل هیچ posts ای وجود ندارد چرا که posts به صورت پویا در فایل Blog.js تعریف شده بود. به همین دلیل  به Blog.js رفته و کد مربوط به ساخت posts را کات می کنیم و به شکل زیر درون Posts.js قرار می دهیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکانپذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

مشکل بعدی این است که کد مربوط به ساخت Post به state نیاز دارد (this.state.posts) بنابراین باید کدهای State را از Blog.js به Posts.js ببریم:

اما به دو قسمت آخر (selectedPostId و error) نیازی نداریم به همین دلیل آن را حذف می کنیم:

اگر باز هم به قسمت JSX در تعریف متغیر posts نگاه کنید متوجه می شوید که متد postSelectedHandler در فایل Blog.js جامانده است. بنابراین آن را هم به فایل Posts.js بیاورید:

در مرحله ی بعد تمام componentDidMount را نیز از فایل Blog.js کات کرده و درون Posts.js قرار دهید:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکانپذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

در نهایت باید axios را درون posts.js وارد کنیم تا بتواند پست های خودش را دریافت کند. به همین خاطر دستور import آن را از Blog.js حذف کرده و دستور import زیر را در Posts.js قرار دهید:

همچنین Posts.js از Post.js استفاده می کند که باید آن را هم درون آن import کنیم:

حالا کامپوننت Posts.js کامل شده است و پست های خودش را دریافت می کند بنابراین می توانیم به فایل Blog.js رفته و Posts.js را در آن import کنیم:

سپس در قسمت JSX فایل Blog.js می گوییم:

 همانطور که مشاهده میکنید <Posts /> را در آن ایجاد کرده ایم.

چند مورد دیگر برای تکمیل کدها باقی مانده است. یادتان باشد کلاس Posts را در انتهای فایل خود (Posts.js) استخراج کنید:

همچنین کلاس Posts را از فایل Blog.css کات کنید:

سپس درون پوشه ی Posts یک فایل به نام Posts.css بسازید و کلاس بالا را در آن paste کنید. حالا به فایل Posts.js می رویم تا این کلاس را در آن import کنیم:

توجه داشته باشید که از CSS Module ها استفاده نکرده ایم بنابراین نیازی به تعیین نام برای دستور import بالا وجود ندارد. کلاس ها سراسری هستند و باید مستقیما نیز وارد پروژه شوند.

حالا پروژه ی ما آماده ی اضافه کردن Routing می باشد که در جلسه ی بعد کار های مربوط به آن را شروع خواهیم کرد.

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکانپذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

کارت ویزیت لایه باز...

ما را در سایت کارت ویزیت لایه باز دنبال می‌کنید

برچسب: نویسنده: بازدید: 103 تاريخ: جمعه 20 دی 1398 ساعت: 8:06

صفحه بندی