在 Next.js 13 中,可以使用 'next/router' 模块中的 'useRouter' 钩子函数来监听路由变化,并且使用 'nprogress' 库来实现进度条效果。

首先安装 'nprogress' 库:

npm install nprogress

然后在需要添加进度条的页面中使用以下代码:

import { useEffect } from 'react';
import { useRouter } from 'next/router';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';

const Page = () => {
  const router = useRouter();

  useEffect(() => {
    const handleStart = () => {
      NProgress.start();
    };

    const handleComplete = () => {
      NProgress.done();
    };

    router.events.on('routeChangeStart', handleStart);
    router.events.on('routeChangeComplete', handleComplete);
    router.events.on('routeChangeError', handleComplete);

    return () => {
      router.events.off('routeChangeStart', handleStart);
      router.events.off('routeChangeComplete', handleComplete);
      router.events.off('routeChangeError', handleComplete);
    };
  }, [router]);

  return (
    <div>
      {/* 页面内容 */}
    </div>
  );
};

export default Page;

上面的代码中,我们使用 'useRouter' 钩子函数获取当前页面的路由对象,然后使用 'useEffect' 钩子函数在组件挂载和卸载时注册和注销路由事件监听器。

在路由事件触发时,我们使用 'NProgress' 的 'start' 和 'done' 方法来控制进度条的显示和隐藏。

最后在页面中渲染需要添加进度条的内容即可。

需要注意的是,在使用 'nprogress' 库时,需要将 'nprogress.css' 样式文件引入到项目中。


原文地址: https://www.cveoy.top/t/topic/nvVy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录