'How to delay 'next/link' Nextjs

How add a Route link a delay for page transitions?

Nextjs Version 12.1.0

<Link href="/">
  <a className='logo-home'></a>
</Link>{' '}

the solution i used

App.js

  const router = useRouter();
  const [loading, setLoading] = useState(false);

  useEffect(() => {
    router.events.on("routeChangeError", (e) => setLoading(false));
    router.events.on("routeChangeStart", (e) => setLoading(false));
    router.events.on("routeChangeComplete", (e) => setTimeout(() => {setLoading(true)}, 1000));

    return () => {
      router.events.off("routeChangeError", (e) => setLoading(false));
      router.events.off("routeChangeStart", (e) => setLoading(false));
      router.events.off("routeChangeComplete", (e) => setTimeout(() => {setLoading(true)}, 1000));
    };
  }, [router.events]);


{loading ? (<Component {...pageProps} />) : (null)}

It doesn't work well.

Can someone help me. Another better solution



Solution 1:[1]

You can just disable the link redirect and use router.push.

Use onClick on Link component.

<Link href="/" onClick={handleClick}>
  <a className='logo-home'></a>
</Link>

Use timeout to delay redirect.

const handleClick = (e) => {
    e.preventDefault();
    setLoading(true);
    setTimeout(() => {
        router.push('/');
    }, 3000);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 hurricane