Next.js - Roteamento

Next.js usa um roteador baseado em sistema de arquivos. Sempre que adicionamos qualquer página apagesdiretório, ele está automaticamente disponível via url. A seguir estão as regras deste roteador.

  • Index Routes- Um arquivo index.js presente em uma pasta mapeia para a raiz do diretório. Por exemplo -

    • pages / index.js mapeia para '/'.

    • pages / posts / index.js mapeia para '/ posts'.

  • Nested Routes- Qualquer estrutura de pasta aninhada no diretório de páginas porque o roteador url automaticamente. Por exemplo -

    • pages / settings / dashboard / about.js mapeia para '/ settings / dashboard / about'.

    • pages / posts / first.js mapeia para '/ posts / first'.

  • Dynamic Routes- Podemos usar o parâmetro nomeado também para corresponder ao url. Use colchetes para o mesmo. Por exemplo -

    • pages / posts / [id] .js mapeia para '/ posts /: id' onde podemos usar URL como '/ posts / 1'.

    • pages / [user] /settings.js mapeia para '/ posts /: user / settings' onde podemos usar URL como '/ abc / settings'.

    • pages / posts / [... all] .js mapeia para '/ posts / *' onde podemos usar qualquer URL como '/ posts / 2020 / jun /'.

Link de página

Next.JS permite vincular páginas no lado do cliente usando o componente Link react. Possui as seguintes propriedades -

  • href- nome da página no diretório de páginas. Por exemplo/posts/first que se refere a first.js presente no diretório pages / posts.

Vamos criar um exemplo para demonstrar o mesmo.

Neste exemplo, vamos atualizar a página index.js e first.js para fazer um acerto no servidor para obter dados.

Vamos atualizar o projeto nextjs usado no capítulo Suporte Global de CSS .

Atualize o arquivo index.js no diretório de páginas conforme a seguir.

import Link from 'next/link'
import Head from 'next/head'

function HomePage(props) {
   return (
      <>
         <Head>
            <title>Welcome to Next.js!</title>
         </Head>
         <div>Welcome to Next.js!</div>
         <Link href="/posts/first">> <a>First Post</a></Link>
         <br/>
         <div>Next stars: {props.stars}</div>
         <img src="/logo.png" alt="TutorialsPoint Logo" />
      </>	    
   )
}

export async function getServerSideProps(context) {
   const res = await fetch('https://api.github.com/repos/vercel/next.js')
   const json = await res.json()
   return {
      props: { stars: json.stargazers_count }
   }
}

export default HomePage

Inicie o servidor Next.js

Execute o seguinte comando para iniciar o servidor -.

npm run dev
> [email protected] dev \Node\nextjs
> next

ready - started server on http://localhost:3000
event - compiled successfully
event - build page: /
wait  - compiling...
event - compiled successfully
event - build page: /next/dist/pages/_error
wait  - compiling...
event - compiled successfully

Verificar saída

Abra localhost: 3000 em um navegador e você verá a seguinte saída.

Clique no link da primeira postagem.