Link آدرس url را تغییر می دهد، اما کامپوننت ها لود نمی شوند(ریکت)

سلام
من یک لیست تو صفحم دارمم که با کلیک روی اون، کامپوننت هایی که تو صفحه هستند، آدرس url رو می گیرند و با اون خودشان را بروزرسانی می کنند.
حالا مشکلی که دارم اینه که با کلیک روی یک link ، آدرس url عوض می شه، اما کامپوننت ها لود نمی شوند ، و باید حتما صفحه رو رفرش کنم تا کار کنن.
مشکل از کجاست؟؟

لینک گیت هاب پروژه

Routeها رو تو مسیر زیر تعریف کردم:
client/src/App.js

باید کد شیر کنی تا که بتونیم کمک کنیم

سلام
آیا از react-router استفاده کردید؟

کد رو گذاشتم تو پست اولم

سلام

از react-router-dom نسخه 4.3.1

روی کدوم کدوم component کلیک می کنی و url چی هست ؟

روی sideNav کلیک می کنم و آدرس هم <link to=’/iran/cat/HeramSeni< است. البته بستگی به لینکی که کلیک کنم، قسمتی که bold کردم تغییر می کنه.

به نظر من مشکل شما lifecycle یک کامپوننت هست و اینکه کامپوننت app شما وقتی رات عوض میشه ری رندر نمیشه. ببینید با تغییر کامپوننت app به کامپوننت تابعی مشکل حل میشه. یعنی از کلاس برای تعریف کامپوننت استفاده نکنید به جاش از تابع استفاده کنید.

نه . درست نشد

شما باید کاری کنید که app ری رندر بشه.
به نظر من بهتره که یک استیت برای app تعریف کنید به نام cat و یک تابع که این استیت رو عوض کنه و تابع رو به کامپوننت SideNav بفرستی تا هر موقع که روی گزینه هاش کلیک کردی اون تابع صدا زده بشه و در این صورت app ری رندر بشه. و میتونی اون cat رو به عنوان props به ChartHolder بفرستی و دیگه از this.props.match.params.cat استفاده نکنید.

همچنین شما توی app اصلا نیازی به رات نداری چون فقط دارید یک رات رو صدا میزنید بهتره که اون رات رو حذف کنید و به جایش کامپوننت بذارید.

1 Like