Maison > interface Web > js tutoriel > Comment puis-je accéder et utiliser l'objet historique en dehors des composants dans React Router v6 ?

Comment puis-je accéder et utiliser l'objet historique en dehors des composants dans React Router v6 ?

Susan Sarandon
Libérer: 2024-11-03 06:41:30
original
209 Les gens l'ont consulté

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

Navigation en dehors des composants dans React Router v6

Dans React Router v5, il était possible de créer un objet historique en dehors des composants et de le transmettre au routeur pour utilisation dans des contextes extérieurs. Cependant, cela n'est pas directement possible dans React Router v6.

Implémentation d'un routeur personnalisé

Une solution de contournement consiste à implémenter un routeur personnalisé qui instancie l'état de l'historique de la même manière que les routeurs React Router v6. Par exemple :

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}
    />
  );
};
Copier après la connexion

Ce routeur personnalisé consomme un objet d'historique personnalisé et gère l'état de navigation. Vous pouvez ensuite remplacer le routeur par défaut par ce routeur personnalisé pour obtenir le comportement souhaité.

unstable_HistoryRouter

Une approche alternative consiste à utiliser le unstable_HistoryRouter exporté par React Router v6. Il prend une instance de la bibliothèque d'historique comme accessoire, vous permettant de l'utiliser en externe.

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
);
Copier après la connexion

Veuillez noter que unstable_HistoryRouter peut être sujet à des modifications avec rupture à l'avenir.

Naviguer depuis le routeur directement (RRDv6.4)

Si vous utilisez React Router v6.4 ou version ultérieure et pas d'utiliser des routeurs de données, vous pouvez toujours accéder à unstable_HistoryRouter. Cependant, pour les routeurs de données, vous pouvez utiliser la fonction de navigation attachée à l'objet routeur :

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

const router = createBrowserRouter(...);

...

router.navigate(targetPath, options);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal