_app.js
Podemos ter o _app.js para customizar a nossa inicialização das páginas fazendo bastante coisa legal:
- Layout persistente entre as mudanças de página
- Manter o estado ao navegar nas páginas
- Tratamento de erros personalizado usando
componentDidCatch
- Injetar dados adicionais nas páginas
- Adicionar CSS global
Para que a gente possa substituir o App
padrão nos só precisamos criar pages/_app.js
.
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />}
export default MyApp
O Component
prop é o ativo page
, então sempre que você navegar entre as rotas o Component
mudará para o novo page
que você solicitou.
Portanto, todas as propriedades que você enviar no Component
serão recebidos pelo page
.
pageProps
é um objeto com as propriedades iniciais que foram pré-carregadas para sua página por um dos métodos de busca de dados , caso contrário, é um objeto vazio.
Ressalvas
- Se seu aplicativo estiver em execução e você acabou de adicionar um personalizado
App
, será necessário reiniciar o servidor de desenvolvimento. Requerido apenas sepages/_app.js
não existisse antes. - Adicionar um custom
getInitialProps
em seuApp
irá desabilitar a Otimização Estática Automática em páginas sem Geração Estática . App
atualmente não suporta métodos de busca de dados Next.js como getStaticPropsou getServerSideProps.