Heim >Web-Frontend >js-Tutorial >Wie kann man Daten effizient zwischen React-Router-Seiten weitergeben?
Problem:
Navigation aus einer Liste von Elementen zu einer Detailseite, die die Details des ausgewählten weitergibt Artikel.
Lösung:
Es gibt drei Hauptoptionen für die Weitergabe von Daten zwischen Seiten mithilfe von React Router:
Option 1: Pass Route Status
Senden Sie die Artikel-ID in den Routen Zustand:
v6 (Deklarativ):
<Link to="/home/userDetails" state={{ infoId: info.id }}>...</Link>
v6 (Imperativ):
import { useNavigate } from "react-router-dom"; const navigate = useNavigate(); navigate("/home/userDetails", { state: { infoId: info.id } });
v5 (Deklarativ):
<Link to={{ pathname: '/home/userDetails', state: { infoId: info.id } }}>...</Link>
v5 (Imperativ):
import { useHistory } from "react-router-dom"; const history = useHistory(); history.push({ pathname: '/home/userDetails', state: { infoId: info.id } });
Erhalten Sie den Status im Ziel Komponente:
v6:
const { state: { infoId } = {} } = useLocation();
v5:
if (props.location && props.location.state && props.location.state.infoId) { // Access info ID }
Option 2: Etwas übergeben im URL-Pfad
Fügen Sie die Artikel-ID in die URL ein Pfad:
<Link to={`/home/userDetails/${info.id}`}>...</Link>
Empfangen Sie den Parameter in der Zielkomponente:
v6:
const { infoId } = useParams();
v5:
const infoId = props.match.params.infoId;
Option 3: Übergeben Sie etwas in der URL-Abfrage Zeichenfolge
Fügen Sie die Element-ID an die URL-Abfragezeichenfolge an:
v6 (deklarativ):
<Link to={{ pathname: '/home/userDetails', search: `?infoId=${info.id}` }}>...</Link>
v6 (Imperativ):
import { useNavigate } from "react-router-dom"; const navigate = useNavigate(); navigate({ pathname: '/home/userDetails', search: `?infoId=${info.id}` });
v5 (Deklarativ):
<Link to={{ pathname: '/home/userDetails', search: `?infoId=${info.id}` }}>...</Link>
v5 (Imperativ):
import { useHistory } from "react-router-dom"; const history = useHistory(); history.push({ pathname: '/home/userDetails', search: `?infoId=${info.id}` });
Erhalten Sie den Abfrageparameter im Ziel Komponente:
v6:
const [searchParams] = useSearchParams(); const infoId = searchParams.get("infoId");
v5:
if (props.location && props.location.search) { const searchParams = new URLSearchParams(props.location.search); const infoId = searchParams.get("infoId"); }
Das obige ist der detaillierte Inhalt vonWie kann man Daten effizient zwischen React-Router-Seiten weitergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!