Verwenden von React Router Teil 2

Router-Hooks reagieren

Nachdem Sie nun verstanden haben, warum Hooks für das Routing hinzugefügt werden, sehen wir uns die Hooks in Aktion an.

useParams

Der useParamsHook gibt ein Objekt zurück, das Schlüssel-Wert-Paare der übergebenen Parameter in einer dynamischen URL enthält.

Angenommen , Sie haben eine UserSeitenkomponente, die ein idals Parameter in der URL akzeptiert.

<Route path="/user/:id">
  <User />
</Route>

import { useParams } from "react-router-dom";

const User = () => {
  const params = useParams();
console.log(params);
return (
    // ...
  )
}

{
  id: 3,
}

import {
  // ...
  useParams,
} from "react-router-dom";
// /user/:id
const User = () => {
  const params = useParams();
return (
    <div>
      <div>This is the user page</div>
      <div>current user Id - {params.id}</div>
    </div>
  );
};

Die useHistoryHooks geben das historyObjekt zurück, das der Router intern verwendet, um die Routenänderungen zu verarbeiten. Das historyObjekt wird zum Verwalten des Sitzungsverlaufs verwendet.

Sie können die history.push()Methode beispielsweise verwenden, um dem Verlaufsstapel einen neuen Eintrag hinzuzufügen und den Benutzer von der aktuellen Route zu navigieren:

import {
  // ...
  useHistory,
} from "react-router-dom";
const User = () => {
  const history = useHistory();
  const params = useParams();
const handleBack = () => {
    history.goBack();
  };
const handleNavigation = () => {
    history.push("/user/5");
  };
return (
    <div>
      <div>This is the user page</div>
      <div>current user Id - {params.id}</div>
      <div>
        <button onClick={handleBack}>Go Back</button>
      </div>
      <div>
        <button onClick={handleNavigation}>Go To Different User</button>
      </div>
    </div>
  );
};

useLocation

Der useLocationHook ermöglicht Ihnen den Zugriff auf das locationObjekt, das die aktive URL darstellt. Der Wert des locationObjekts ändert sich immer dann, wenn der Benutzer zu einer neuen URL navigiert.
Der useLocationHook kann praktisch sein, wenn Sie jedes Ereignis auslösen müssen, wenn sich die URL ändert.

Denken Sie daran, dass Sie die Aufrufe auf den Profilseiten der Benutzer verfolgen müssen. Sie können Änderungen im locationObjekt mit dem useEffectHook erkennen, der mit React geliefert wird.

import {
  // ...
  useLocation,
} from "react-router-dom";
const User = () => {
  const history = useHistory();
  const params = useParams();
  const location = useLocation();
useEffect(() => {
    console.log(location.pathname);
    // Send request to your server to increment page view count
  }, [location]);
const handleBack = () => {
    history.goBack();
  };
const handleNavigation = () => {
    history.push("/user/5");
  };
return (
    <div>
      <div>This is the user page</div>
      <div>current user Id - {params.id}</div>
      <div>
        <button onClick={handleBack}>Go Back</button>
      </div>
      <div>
        <button onClick={handleNavigation}>Go To Different User</button>
      </div>
    </div>
  );
};

Der useRouteMatchHook gleicht die aktive URL mit einem bestimmten Pfad ab, ähnlich wie die RouteKomponente funktioniert. Es ist ein sehr interessanter Haken; Sie können die unnötige RouteKomponente entfernen und auf das matchObjekt zugreifen.

Sie können den Pfad in der Routenkomponente der Benutzerseite jetzt einfach ändern in /user:

<Route path="/user/">
  <User />
</Route>

import {
  // ...
  useRouteMatch,
} from "react-router-dom";
const User = () => {
  const history = useHistory();
const routeMatch = useRouteMatch("/user/:id");
  const location = useLocation();
useEffect(() => {
    console.log(location);
  }, [location]);
const handleBack = () => {
    history.goBack();
  };
const handleNavigation = () => {
    history.push("/user/5");
  };
return (
    <div>
      <div>This is the user page</div>
      {routeMatch ? (
        <div>user Id - {routeMatch.params.id}</div>
      ) : (
        <div>You are viewing your profile</div>
      )}
<div>
        <button onClick={handleBack}>Go Back</button>
      </div>
      <div>
        <button onClick={handleNavigation}>Go To Different User</button>
      </div>
    </div>
  );
};

Fazit

Hooks sind eine großartige Ergänzung des React-Ökosystems. Nachdem Sie nun etwas Code zur Handhabung des Routings mit Hooks gesehen haben, sind Sie bereit, das, was sie zu bieten haben, voll auszunutzen.

Bis zum nächsten Mal, bleiben Sie sicher und programmieren Sie weiter mit React Hooks!

Suggested posts

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.

Meine am häufigsten verwendeten Codierungsressourcen

Meine am häufigsten verwendeten Codierungsressourcen

Diese Woche erhielt ich eine E-Mail von einem Mitglied der täglichen E-Mail-Liste. Sie wollten wissen: Welche Ressourcen besuchen Sie täglich, wöchentlich und monatlich? Tolle Frage! Ich versuche gerne, einige Einblicke in meinen Arbeitsablauf und die wichtigsten Ressourcen, die ich verwende, mit Ihnen zu teilen.

Related posts

Schaffung einer sicheren Arbeitsumgebung

Schaffung einer sicheren Arbeitsumgebung

„Er wird mich beschützen, wenn ich in Gefahr bin. Er wird mich in seinem Zelt verstecken.

Warum manche Freiberufler ihr Leben vortäuschen

Warum manche Freiberufler ihr Leben vortäuschen

Ich war kürzlich auf Linkedin, dem weltweit größten professionellen sozialen Netzwerk, und habe Beiträge von freiberuflichen Designern gefunden, denen ich folge und die meine Aufmerksamkeit erregt haben. Sie alle haben Fotos aus Flugzeugen, am Strand mit ihren Laptops, aus Schwimmbädern und Büros mit atemberaubender Aussicht gepostet.

Die Workplace-Revolution: Top-Experten diskutieren über Hybrid- und Remote-Arbeit

Die Workplace-Revolution: Top-Experten diskutieren über Hybrid- und Remote-Arbeit

In der sich schnell entwickelnden Geschäftslandschaft von heute hat das Konzept der Hybrid- und Remote-Arbeit eine beispiellose Dynamik erlangt. Während sich Unternehmen weiterhin an die sich verändernden Bedürfnisse und Erwartungen ihrer Mitarbeiter anpassen, sind Experten aus verschiedenen Bereichen zusammengekommen, um die Vorteile, Herausforderungen und die Zukunft dieser transformativen Arbeitsweise zu diskutieren.

Netzwerk-TV Twitter

Netzwerk-TV Twitter

Was alt ist, ist jetzt wieder neu und was früher das glitzernde, glänzende Ding war, fühlt sich jetzt langweilig an. Ich spreche nicht davon, dass JNCO-Jeans zusammen mit anderen Modetrends der späten 1990er Jahre unter den coolen Kids in der Innenstadt ein Comeback erleben.