If you have been using dynamic route in NextJS, you may face this issue which
useEffect is not triggering when the user is redirected to the same dynamic route. Let’s suppose we have our dynamic route as
post/[id].tsx , a simple example would look something like this:
On first load, current route ID is 98, “13” is randomly generated in
Notice the console does not print a second “USE EFFECT”, “Go to Post 13” button is not updated as well.
Solution 1: Add prop to useEffect dependency list
The first solution is straightforward, add the route query of the dynamic route(i.e
useEffect , like so:
Solution 2: Add key to getServerSideProps
Another way is to add a key that changes every time when the route changes to the props that returned from
getServerSideProps . You can keep the
useEffect dependency list as empty in this case
You can also find the code here.