Alt for å jobbe med Windows - det beste operativsystemet fra Microsoft. Vi dekker alt fra Windows 10 Insider -programmet til Windows 11. Gir deg alle de siste nyhetene om Windows 10 og mer.

Hvordan lage dynamiske ruter i Next.js

9

Dynamiske ruter er sider som lar deg bruke egendefinerte parametere i en URL. De er spesielt nyttige når du lager sider for dynamisk innhold.

For en blogg kan du bruke en dynamisk rute for å lage URL-er basert på titlene på blogginnleggene. Denne tilnærmingen er bedre enn å lage en sidekomponent for hvert innlegg.

Du kan lage dynamiske ruter i Next.js ved å definere to funksjoner: getStaticProps og getStaticPaths.

Opprette en dynamisk rute i Next.js

For å lage en dynamisk rute i Next.js, legg til parenteser på en side. For eksempel, [params].js, [slug].js eller [id].js.

For en blogg kan du bruke en snegle for den dynamiske ruten. Så hvis et innlegg hadde slug dynamic-routes-nextjs, ville den resulterende URL-adressen være https://example.com/dynamic-routes-nextjs.

I pages-mappen oppretter du en ny fil kalt [slug].js og oppretter Post-komponenten som tar postdataene som en prop.

const Post = ({ postData }) => {  return <div>{/* content */}</div>;};

Det er forskjellige måter du kan sende innleggsdataene til Posten. Metoden du velger avhenger av hvordan du vil gjengi siden. For å hente dataene under byggetiden, bruk getStaticProps() og for å hente dem på forespørsel, bruk getServerSideProps().

Bruke getStaticProps for å hente postdata

Blogginnlegg endres ikke så ofte, og det er tilstrekkelig å hente dem på byggetidspunktet. Så, endre Post-komponenten for å inkludere getStaticProps().

import { getSinglePost } from "../../utils/posts"; const Post = ({ content }) => {  return <div>{/* content */}</div>;}; export const getStaticProps = async ({ params }) => {    const post = await getSinglePost(params.slug);    return {      props: { ...post },    };  };

GetStaticProps-funksjonen genererer postdataene som gjengis på siden. Den bruker slug fra banene generert av getStaticPaths-funksjonen.

Bruke getStaticPaths for å hente baner

GetStaticPaths()-funksjonen returnerer banene for sidene som skal forhåndsrenderes. Endre Post-komponenten for å inkludere den:

export const getStaticPaths = async() => {  const paths = getAllPosts().map(({ slug }) => ({ params: { slug } }));  return {    paths,    fallback: false,  };};

Denne implementeringen av getStaticPaths henter alle innleggene som skal gjengis og returnerer sneglene som paramer.

Til sammen vil [slug].js se slik ut:

import { getAllPosts, getSinglePost } from "../../utils/posts"; const Post = ({ content }) => {  return <div>{content}</div>;}; export const getStaticPaths = async() => {  const paths = getAllPosts().map(({ slug }) => ({ params: { slug } }));  return {    paths,    fallback: false,  };}; export const getStaticProps = async ({ params }) => {  const post = await getSinglePost(params.slug);   return {    props: { ...post },  };}; export default Post;

Du må bruke getStaticProps() og getStaticPaths() sammen for å lage en dynamisk rute. GetStaticPaths()-funksjonen skal generere de dynamiske rutene, mens getStaticProps() henter dataene som er gjengitt på hver rute.

Opprette nestede dynamiske ruter i Next.js

For å opprette en nestet rute i Next.js, må du opprette en ny mappe i sider-mappen og lagre den dynamiske ruten i den.

For å lage /pages/posts/dynamic-routes-nextjs, lagre for eksempel [slug].js i /pages/posts.

Tilgang til URL-parametere fra dynamiske ruter

Etter å ha opprettet ruten, kan du hente URL-parameteren fra den dynamiske ruten ved å bruke useRouter() React-kroken.

For sidene/[slug].js, få sneglen slik:

import { useRouter } from 'next/router' const Post = () => {  const router = useRouter()  const { slug } = router.query  return <p>Post: {slug}</p>} export default Post

Dette vil vise slug av innlegget.

Dynamisk ruting med getServerSideProps

Ved å bruke Next.js kan du hente data på byggetidspunktet og lage dynamiske ruter. Du kan bruke denne kunnskapen til å forhåndsgjengi sider fra en liste over elementer.

Hvis du vil hente data på hver forespørsel, bruk getServerSideProps i stedet for getStaticProps. Merk at denne tilnærmingen er tregere; du bør bare bruke den når du bruker regelmessig skiftende data.

Opptakskilde: www.makeuseof.com

Dette nettstedet bruker informasjonskapsler for å forbedre din opplevelse. Vi antar at du er ok med dette, men du kan velge bort det hvis du ønsker det. jeg aksepterer Mer informasjon