دوره زبان تخصصی برای برنامه‌نویسان (هدیه ویژه ثبت‌نام در دوره‌های متخصص) (فرصت محدود ⏰)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ حمیدرضا طاهری جم
location , history , privateroute
جامعه ری اکت ایجاد شده در ۰۶ دی ۱۴۰۳

سلام ، خسته نباشید

مگه ما توی private route لوکیشن قبلی رو که همین privete route میشه با path = ' /panel' 

توی state وارد نکردیم؟

خب پس وقتی دکمه ی back رو میزنیم باید location panel رو نشون بده دیگه 

چرا پس رفت به صفحه ی blog?

من اینو واقعا نفهمیدم چون state رو داخل private route اصلا تعریف کردیم و داخلش panel قرار داره

اصلا ربطی به blog نداشت

ممنون میشم توضیح بدین

سلام،

وقتی در کامپوننت PrivateRoute مسیر قبلی رو داخل state ذخیره میکنی، این اطلاعات فقط داخل برنامه هست و توی تاریخچه مرورگر ثبت نمیشه.

برای همین وقتی دکمه Back رو مزنی، مرورگر به مسیری برمیگرده که واقعاً توی history ثبت شده. مثلاً اگه قبل از تلاش برای رفتن به /panel توی /blog بودی، با Back برمیگردی به /blog.

این اتفاق به این دلیله که وقتی کاربر میخواد به یک مسیر محافظت‌ شده مثل /panel بره و لاگین نکرده، PrivateRoute اونو به صفحه لاگین میفرسته. این ریدایرکت باعث میشه /login توی history ثبت بشه. بعد از لاگین موفق، دوباره میره به /panel.

در نتیجه، ترتیب history میشه:

 /blog -> /panel -> /login -> /panel

اگه Back بزنی، به‌ ترتیب برمیگردی به /login، بعد /panel، و در نهایت /blog.

محسن موحد ۰۶ دی ۱۴۰۳، ۱۷:۵۴