Search code examples
next.jsserver-side-renderingdynamic-routingnext-router

nextJS SSR useRouter() does not work when refresh page


I am using nextJS SSR in my project. Now when I try to use the following code to get page parameters then it shows undefined.

 function About() {
  const router = useRouter();
  const { plan_id } = router.query;
  console.log(plan_id)
 }
 export default About;

It works when the page is routed from some other page (without page reload with "next/link") but it does not work when I refresh the page. Can someone please help?


Solution

  • I found the answer self. Actually when you refresh the page then the router does not get initialized instantly. So you can add that under UseEffect hook as following and you will be able to get the parameters

    function About() {
    
     const [param1, setParam1]=useState("");
     const router = useRouter();
    
     useEffect(() => {
      if (router && router.query) {
       console.log(router.query);
       setParam1(router.query.param1);
      }
     }, [router]);
    }
    

    When this router parameter will change then it will call the "UseEffect" which can be used to retrieve the values.