Next.js - routing

Next.js używa routera opartego na systemie plików. Ilekroć dodajemy jakąkolwiek stronę dopageskatalog, jest on automatycznie dostępny za pośrednictwem adresu URL. Oto zasady tego routera.

  • Index Routes- Plik index.js obecny w folderze jest odwzorowywany na katalog główny. Na przykład -

    • pages / index.js mapuje na „/”.

    • pages / posts / index.js odwzorowuje na „/ posts”.

  • Nested Routes- Dowolna struktura folderów zagnieżdżonych w katalogu stron, ponieważ adres URL routera automatycznie. Na przykład -

    • pages / settings / dashboard / about.js mapuje na „/ settings / dashboard / about”.

    • pages / posts / first.js mapuje na „/ posts / first”.

  • Dynamic Routes- Możemy również użyć nazwanego parametru do dopasowania adresu URL. Użyj nawiasów do tego samego. Na przykład -

    • pages / posts / [id] .js mapuje do „/ posts /: id”, gdzie możemy użyć adresu URL, takiego jak „/ posts / 1”.

    • pages / [user] /settings.js mapuje do „/ posts /: user / settings”, gdzie możemy użyć adresu URL, takiego jak „/ abc / settings”.

    • pages / posts / [... all] .js mapuje do „/ posts / *”, gdzie możemy użyć dowolnego adresu URL, takiego jak „/ posts / 2020 / jun /”.

Łączenie stron

Next.JS umożliwia linkowanie stron po stronie klienta za pomocą komponentu Link React. Posiada następujące właściwości -

  • href- nazwa strony w katalogu stron. Na przykład/posts/first który odnosi się do first.js obecnego w katalogu pages / posts.

Stwórzmy przykład, aby zademonstrować to samo.

W tym przykładzie zaktualizujemy strony index.js i first.js, aby serwer mógł pobierać dane.

Zaktualizujmy projekt nextjs używany w rozdziale Globalne wsparcie CSS .

Zaktualizuj plik index.js w katalogu stron w następujący sposób.

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

Uruchom serwer Next.js

Uruchom następujące polecenie, aby uruchomić serwer -.

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

Sprawdź wyjście

Otwórz localhost: 3000 w przeglądarce, a zobaczysz następujące dane wyjściowe.

Kliknij link First post.