Heim > Web-Frontend > js-Tutorial > Wie kann ich außerhalb von Komponenten in React Router v6 auf das Verlaufsobjekt zugreifen und es verwenden?

Wie kann ich außerhalb von Komponenten in React Router v6 auf das Verlaufsobjekt zugreifen und es verwenden?

Susan Sarandon
Freigeben: 2024-11-03 06:41:30
Original
191 Leute haben es durchsucht

How Can I Access and Use the History Object Outside of Components in React Router v6?

Navigieren außerhalb von Komponenten in React Router v6

In React Router v5 war es möglich, ein Verlaufsobjekt außerhalb von Komponenten zu erstellen und es zur Verwendung an den Router zu übergeben in externen Kontexten. Dies ist jedoch in React Router v6 nicht direkt möglich.

Benutzerdefinierte Router-Implementierung

Eine Problemumgehung besteht darin, einen benutzerdefinierten Router zu implementieren, der den Verlaufsstatus auf ähnliche Weise wie React Router v6-Router instanziiert. Zum Beispiel:

const CustomRouter = ({ history, ...props }) => {
  const [state, setState] = useState({
    action: history.action,
    location: history.location
  });

  useLayoutEffect(() => history.listen(setState), [history]);

  return (
    <Router
      {...props}
      location={state.location}
      navigationType={state.action}
      navigator={history}
    />
  );
};
Nach dem Login kopieren

Dieser benutzerdefinierte Router nutzt ein benutzerdefiniertes Verlaufsobjekt und verwaltet den Navigationsstatus. Sie können dann den Standard-Router durch diesen benutzerdefinierten Router ersetzen, um das gewünschte Verhalten zu erreichen.

unstable_HistoryRouter

Ein alternativer Ansatz besteht darin, den von React Router v6 exportierten unstable_HistoryRouter zu verwenden. Es benötigt eine Instanz der Verlaufsbibliothek als Requisite, sodass Sie sie extern verwenden können.

import { unstable_HistoryRouter as HistoryRouter } from "react-router-dom";
import { createBrowserHistory } from "history";

const history = createBrowserHistory({ window });

ReactDOM.render(
  <HistoryRouter history={history}>
    {/* The rest of your app goes here */}
  </HistoryRouter>,
  root
);
Nach dem Login kopieren

Bitte beachten Sie, dass unstable_HistoryRouter in Zukunft möglicherweise wichtigen Änderungen unterliegt.

Navigation von direkt mit dem Router (RRDv6.4)

Wenn Sie React Router v6.4 oder höher verwenden und keine Verwendung von Datenroutern, Sie können trotzdem auf unstable_HistoryRouter zugreifen. Für Datenrouter können Sie jedoch die Navigationsfunktion verwenden, die dem Router-Objekt zugeordnet ist:

import { createBrowserRouter } from 'react-router-dom';

const router = createBrowserRouter(...);

...

router.navigate(targetPath, options);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich außerhalb von Komponenten in React Router v6 auf das Verlaufsobjekt zugreifen und es verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage