💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در آذرماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ سیامک احمدی
جابه جایی بین صفحات
جامعه ری اکت ایجاد شده در ۰۴ دی ۱۴۰۰

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

ادامه ی این تایپیک

یک وب اپ داریم که سه تا صفحه ی اصلی داره که با نویگیشن بار بین اونها با استفاده از ریکت روتر جابه جا میشیم تا اینجا مشکلی نیست و به درستی عمل میکنه

3c27-Show.jpg

صفحه ی دیگه ای داریم که صفحه ی سینگل هستش و زمانی که روی کارت‌ها کلیک میکنیم باید اطلاعات مرتبط با همون فیلم رو به ما نشون بده

fcdd-Single.jpg

همه چیز درسته ، از گرفتن اطلاعات و انتقالشون و ... مشکل من توی تعریف صفحه ی سینگل هستش ، زمانی که صفحه ی سینگل رو کنار سه تا صفحه ی اصلی در یک Routes قرار میدم به درستی کار میکنه ولی کامپوننت‌های هدر و نویگیشن بار یو ای قبلی رو نمایش میده که نباید همچین باشه، با این روشی هم که تعریف کردم در حال حاظر درسته و کار میکنه ولی نویگیشن بار فقط توی صفحه ی اصلی میمونه و به درستی بین صفحات سویچ نمیکنه

https://gitlab.com/Siamak.Ahmadi/imbd-webapplication

سورس کد پروژه رو میتونید اینجا ببینید

دقیقا مشکلی که داشتید رو متوجه نشدم که چی هست ولی چیزی که حدس زدم این بود که نمیتونستی به درستی صفحات اصلی رو معرفی بکنی

که زیر رو چک بکن ببین مشکلت حل میشه یا نه! اگر نشد اعلام بکن که مشکل چی بوده که بیشتر بررسی بشه

این کد بر مبنای ورژن ۶ هست برای این مورد بیشتر فکر کرد و کد بهتری هم نوشت و بر مبنای کدهای خودت یک اصلاحاتی رو انجام دادم

به جای اسم Main بهتره که از Layout یا اسم‌های مشابه استفاده بکنی که دقیقا مشخص بشه هدف این کامپوننت چی هست

<Routes>
  <Route path="/" element={<Main />} >
      <Route path="/" element={<Movies />} />
      <Route path="shows" element={<Shows />} />
      <Route path="news" element={<News />} />
  Route>
  <Route path="single/:slug" element={<SinglePage />} />
Routes>

داخل کامپوننت Main هم از Outlet استفاده میکنیم که در ورژن ۶ اضافه شده

<div className="">
  <div className="m-4">
    <Header/>
    <div className="mt-6">
        <Outlet />
    div>
  div>
  <div className="fixed bottom-0 w-full h-14  mainColor  lg:w-60 lg:left-1/3 lg:rounded-full   lg:bottom-2 ">
    <Navigation  />
  div>
div>
بهترین پاسخ
مجتبی سوری ۰۴ دی ۱۴۰۰، ۱۸:۲۶

مشکل حل شد اقای سوری ، سپاسگذارم از شما .

کد خیلی نامرتبه قبول دارم.

من نمیدونستم که میشه دوتا Route جداگونه داخل یک Routes استفاده کرد یا شاید بشه بهش گفت روت‌های تو در تو. و الان اولین باره در باره ی Outlet میشنوم یکم درباره اش رفتم خوندم چیزی که فهمیدم این بود که میاد و روت هایی که از والدش میگیره رو return میکنه ، درست متوجه شدم ؟

سیامک احمدی ۰۴ دی ۱۴۰۰، ۲۰:۴۸

این فیچر در ورزن ۶ اضافه شده برای همین هست که تازگی داره برات

در واقع Outlet یک placeholder محسوب میشه و اجازه میده که یک کامپوننت route‌های فرزندش رو رندر بکن

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