-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Feature request
Description / Observed Behavior
There is need to implement a
useHistoryRouter()hook that works with both NextJS router and Tanstack router.
Additional Context
import {
useHistory
} from "react-router-dom";
/*import {
useNavigate
} from "react-router-dom-v5-compat";
*/
import { useNavigate } from "react-router-dom"; //v6.x
import { useRouter } from "next/router";
const useHistoryRouter = () => {
const isReactRouterDOMRouting = typeof useHistory === "function";
const useBrowserRouter = isReactRouterDOMRouting ? useHistory : useRouter;
const router = useBrowserRouter();
const navigator = typeof useNavigate === "function" ? useNavigate() : null;
return {
navigateTo (urlPath) {
if (navigator !== null) {
return navigate(urlPath)
} else {
return router.push(urlPath);
}
},
get pathname () {
if (Boolean(router.location)) {
return router.location.pathname;
} else {
return router.pathname;
}
},
get state () {
if (Boolean(router.location)) {
return router.location.state;
} else {
return null;
}
},
get search () {
if (Boolean(router.location)) {
const searchParams = new URLSearchParams(
router.location.search
);
return Object.fromEntries(
searchParams.entries()
);
} else {
return router.query;
}
},
navigateBack () {
if (typeof router.back === "function") {
router.back();
} else {
router.goBack();
}
},
reload () {
if (typeof router.reload === "function") {
return router.reload();
} else {
return router.location.reload()
}
}
};
};Request for busser version.
v2.0.0
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request