O que é NProgress?
O NProgress é uma barra que mostra ao usuário o carregamento de uma página apartir do clique em um link, olhe a imagem a seguir:
Como instalar?
Para instalar você precisa adicionar o NProgress ao projeto com yarn ou npm:
yarn add nprogress
npm install --save nprogress
Após a instalação você vai acessar o link para baixar o css do NProgress, você deverá salvar o arquivo css dentro da pasta public/, ficando assim public/nprogress.css, faremos referencia a esse arquivo depois.
Agora abra o arquivo pages/_app.tsx:
# Faça a importação do next/router e do NProgress
import Router from 'next/router'
import NProgress from 'nprogress'
# Import também o next/head, você vai precisar dele
import Head from 'next/head'
# Esses são os eventos disparados quando o usuário muda de página
Router.events.on('routeChangeStart', () => NProgress.start())
Router.events.on('routeChangeComplete', () => NProgress.done())
Router.events.on('routeChangeError', () => NProgress.done())
# Por último, dentro do return da função,
# faça a importação do css do NProgress
[...]
return (
<>
<Head>
<link rel="stylesheet" type="text/css" href="/nprogress.css" />
</Head>
[...]
Prontinho, o NProgress já está configurado e pronto para ser usado no seu projeto Next.js.
Veja como ficará o arquivo _app:
import React from 'react'
import Head from 'next/head'
import { AppProps } from 'next/app'
import Router from 'next/router'
import NProgress from 'nprogress'
Router.events.on('routeChangeStart', () => NProgress.start())
Router.events.on('routeChangeComplete', () => NProgress.done())
Router.events.on('routeChangeError', () => NProgress.done())
const MyApp: React.FC<AppProps> = ({ Component, pageProps }) => {
return (
<>
<Head>
<link rel="stylesheet" type="text/css" href="/nprogress.css" />
</Head>
<Component {...pageProps} />
</>
)
}
export default MyApp
Alterando a cor da barra 💥
Acesse o arquivo anteriormente salvo dentro da pasta public/nprogress.css.
[...]
#nprogress .bar {
background: #29d;
[...]
Altere todas as cores em hexadecimal (#29d) do arquivo, para de sua escolha, por exemplo: (#f0f)
[...]
#nprogress .bar {
background: #f0f;
[...]
Até mais!