mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-28 03:15:16 +00:00
57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
|
import React from "react";
|
||
|
import invariant from "tiny-invariant";
|
||
|
|
||
|
import Context from "./RouterContext.js";
|
||
|
import HistoryContext from "./HistoryContext.js";
|
||
|
import matchPath from "./matchPath.js";
|
||
|
|
||
|
const useContext = React.useContext;
|
||
|
|
||
|
export function useHistory() {
|
||
|
if (__DEV__) {
|
||
|
invariant(
|
||
|
typeof useContext === "function",
|
||
|
"You must use React >= 16.8 in order to use useHistory()"
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return useContext(HistoryContext);
|
||
|
}
|
||
|
|
||
|
export function useLocation() {
|
||
|
if (__DEV__) {
|
||
|
invariant(
|
||
|
typeof useContext === "function",
|
||
|
"You must use React >= 16.8 in order to use useLocation()"
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return useContext(Context).location;
|
||
|
}
|
||
|
|
||
|
export function useParams() {
|
||
|
if (__DEV__) {
|
||
|
invariant(
|
||
|
typeof useContext === "function",
|
||
|
"You must use React >= 16.8 in order to use useParams()"
|
||
|
);
|
||
|
}
|
||
|
|
||
|
const match = useContext(Context).match;
|
||
|
return match ? match.params : {};
|
||
|
}
|
||
|
|
||
|
export function useRouteMatch(path) {
|
||
|
if (__DEV__) {
|
||
|
invariant(
|
||
|
typeof useContext === "function",
|
||
|
"You must use React >= 16.8 in order to use useRouteMatch()"
|
||
|
);
|
||
|
}
|
||
|
|
||
|
const location = useLocation();
|
||
|
const match = useContext(Context).match;
|
||
|
|
||
|
return path ? matchPath(location.pathname, path) : match;
|
||
|
}
|