Maison  >  Article  >  interface Web  >  Comment naviguer en dehors des composants dans React Router v6 ?

Comment naviguer en dehors des composants dans React Router v6 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 11:43:01463parcourir

How to Navigate Outside of Components in React Router v6?

react router v6 : naviguer en dehors des composants

React Router v6 introduit des changements dans la façon dont les objets d'historique sont gérés. Alors que dans la v5, vous pouviez créer un objet d'historique partagé et le transmettre au routeur, la v6 nécessite une approche différente.

Problème :

Comment naviguer de l'extérieur composants dans React Router v6, similaire au comportement dans v5 ?

Solution :

Pour reproduire le comportement précédent, vous pouvez créer un routeur personnalisé qui instancie l'état de l'historique comme cela se fait dans les routeurs RRDv6 :

<code class="javascript">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}
    />
  );
};</code>

Incluez ce routeur personnalisé dans votre application et transmettez votre objet d'historique personnalisé :

<code class="javascript">export default function App() {
  return (
    <CustomRouter history={history}>
      <div className="App">
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/profile" element={<Profile />} />
        </Routes>
      </div>
    </CustomRouter>
  );
}</code>

Mise à jour :

React Router v6 fait apparaître un routeur d'historique, vous permettant de transmettre une instance d'historique personnalisée :

<code class="javascript">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
);</code>

Notes pour RRDv6.4 :

Pour RRDv6.4 et routeurs de données, naviguez en dehors des composants à l'aide de la fonction de navigation du routeur :

<code class="javascript">import { createBrowserRouter } from 'react-router-dom';

const router = createBrowserRouter(...);

...

router.navigate(targetPath, options);</code>

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!

Déclaration:
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