next.js 增加页面加载进度条
效果
安装依赖
yarn add @badrap/bar-of-progress
配置
在src目录的pages下创建_app.js
文件
// pages/_app.js
const MyApp = ({ Component, pageProps }) => {
return <Component {...pageProps} />;
};
export default MyApp;
引入依赖的组件库,配置属性
import ProgressBar from "@badrap/bar-of-progress"; const progress = new ProgressBar({ size: 2, color: "#38a169", className: "bar-of-progress", delay: 100, });
通过Router
事件回调组件事件
// ... import Router from "next/router"; // ... Router.events.on("routeChangeStart", progress.start); Router.events.on("routeChangeComplete", progress.finish); Router.events.on("routeChangeError", progress.finish); // ...
最后,你的_app.js
应该是这样的
import ProgressBar from "@badrap/bar-of-progress"; import Router from "next/router"; const progress = new ProgressBar({ size: 2, color: "#38a169", className: "bar-of-progress", delay: 100, }); Router.events.on("routeChangeStart", progress.start); Router.events.on("routeChangeComplete", progress.finish); Router.events.on("routeChangeError", progress.finish); const MyApp = ({ Component, pageProps }) => { return <Component {...pageProps} />; }; export default MyApp;
自定义样式
const progress = new ProgressBar({ size: 2, color: "#38a169", className: "bar-of-progress", delay: 100, });
.bar-of-progress { z-index: 50; }