Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie navigiere ich außerhalb von Komponenten in React Router v6?

Barbara Streisand
Freigeben: 2024-11-04 11:43:01
Original
459 Leute haben es durchsucht

How to Navigate Outside of Components in React Router v6?

React Router v6: Navigieren außerhalb von Komponenten

React Router v6 führt Änderungen in der Art und Weise ein, wie Verlaufsobjekte behandelt werden. Während Sie in Version 5 ein gemeinsames Verlaufsobjekt erstellen und an den Router übergeben können, erfordert Version 6 einen anderen Ansatz.

Problem:

Wie können Sie von außen navigieren? Komponenten in React Router v6, ähnlich dem Verhalten in v5?

Lösung:

Um das vorherige Verhalten zu reproduzieren, können Sie einen benutzerdefinierten Router erstellen, der den Verlaufsstatus instanziiert wie in RRDv6-Routern gemacht:

<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>
Nach dem Login kopieren

Fügen Sie diesen benutzerdefinierten Router in Ihre Anwendung ein und übergeben Sie Ihr benutzerdefiniertes Verlaufsobjekt:

<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>
Nach dem Login kopieren

Update:

React Router v6 zeigt einen Verlaufsrouter an, sodass Sie eine benutzerdefinierte Verlaufsinstanz übergeben können:

<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>
Nach dem Login kopieren

Hinweise für RRDv6.4:

Für RRDv6.4 und Datenrouter, navigieren Sie mit der Router-Navigationsfunktion außerhalb von Komponenten:

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

const router = createBrowserRouter(...);

...

router.navigate(targetPath, options);</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie navigiere ich außerhalb von Komponenten in React Router v6?. 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