UseRouter bug in Dynamic page
Unanswered
Polar bear posted this in #help-forum
Polar bearOP
## ❓ Next.js custom
Hey! I'm using a custom
### Page code
### Custom
### ❗ Issue
### ❓Question
How can I fix my wrapper to support absolute paths (starting with
Thanks 🙏
useRouter
not redirecting on dynamic pageHey! I'm using a custom
useRouter
wrapper in a dynamic route [id]/page.tsx
. When calling router.push("/projects")
, nothing happens — no redirect.### Page code
"use client";
import ProjectEB from "@shared/books/project/ProjectEB";
import { useTProject } from "@shared/hooks/models";
import { useRouter } from "custom-router";
import { useEffect, useState, use } from "react";
export default function ProjectPage({ params }: { params: any }) {
const { id } = use<{ id: string }>(params);
const { byId, update } = useTProject({ id });
const router = useRouter();
const [isEditorOpen, setIsEditorOpen] = useState(true);
useEffect(() => {
setIsEditorOpen(true);
}, [id]);
if (!byId.data) return <div>Loading...</div>;
if (!isEditorOpen) return null;
return (
<ProjectEB
isOpen={isEditorOpen}
item={byId.data}
onUpdate={update}
onClose={() => {
setIsEditorOpen(false);
router.push("/projects"); // ← does nothing
}}
/>
);
}
### Custom
useRouter
snippetexport const useRouter = () => {
const router = useRouterNext();
const { baseUrl } = useCurrentUrl();
return {
push: (uri) => router.push(`${baseUrl}/${uri}`),
replace: (uri) => router.replace(`${baseUrl}/${uri}`),
refresh: () => router.refresh(),
};
};
### ❗ Issue
push("/projects")
becomes something like /[current]/projects
because of the baseUrl
logic. I want it to go to the actual /projects
.### ❓Question
How can I fix my wrapper to support absolute paths (starting with
/
) without breaking the baseUrl logic?Thanks 🙏
1 Reply
Sloth bear
Can you not just return
?
It's not clear to me why you need the
{
push: (uri) => router.push(uri),
// etc. ...
};
?
It's not clear to me why you need the
baseUrl
. (Or the custom useRouter
)