پرسش

چطور میشه مسیر قبلی را در React Router شناسایی کرد؟

Detect previous path in React Router

سوالی دارم در مورد React Router. می‌خوام بدونم چطور می‌توانم مسیر قبلی که کاربر به آن رفته را شناسایی کنم. به عبارت دیگه، می‌خوام در حالت‌هایی که کاربر از صفحه‌ای به صفحه دیگر می‌ره، مسیر قبلی رو پیدا کنم. آیا راهی برای این کار وجود داره؟

1403/06/03
پاسخ
محمدامین سعیدی راد
بیوگرافی محمدامین سعیدی راد

برای شناسایی مسیر قبلی در React Router، می‌تونید از hook useLocation برای گرفتن اطلاعات مسیر فعلی استفاده کنید و برای ذخیره مسیر قبلی از hook useRef بهره ببرید. در اینجا یک روش ساده برای این کار رو بهت نشون می‌دم:

  • ساختن کامپوننت HistoryTracker
import React, { useEffect, useRef } from 'react';
import { useLocation } from 'react-router-dom';
// Component to track previous path
const HistoryTracker = () => {
  const location = useLocation();
  const prevLocation = useRef(location.pathname);
   useEffect(() => {
     prevLocation.current = location.pathname;
   }, [location]);
   return null;
};
export default HistoryTracker;
  • استفاده از HistoryTracker در اپلیکیشن:
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import HistoryTracker from './HistoryTracker';
const App = () => {
  return (
   <Router>
    <HistoryTracker /> // Tracker
    <Switch>
     <Route path="/home" component={Home} />
     <Route path="/about" component={About} />
    {/* More routes */}
   </Switch>
   </Router>
);
};
export default App;
  1. کامپوننت HistoryTracker: این کامپوننت با استفاده از hook useLocation موقعیت فعلی را دریافت کرده و با استفاده از hook useRef، مسیر قبلی را ذخیره می‌کند. هر بار که مسیر تغییر کند، مقدار prevLocation.current به روز می‌شود.
  2. استفاده از HistoryTracker: این کامپوننت را در بالای کامپوننت‌های خود قرار دهید تا به طور مداوم مسیرهای قبلی را دنبال کند.
    این روش به شما امکان می‌دهد تا به راحتی مسیر قبلی را در هر کامپوننتی که نیاز دارید، شناسایی کنید !
پاسخ: 1403/06/03
آخرین آپدیت: 1403/08/01