Cum se creează rute dinamice în Next.js

Cum se creează rute dinamice în Next.js

Rutele dinamice sunt pagini care vă permit să utilizați parametri personalizați într-o adresă URL. Ele sunt deosebit de benefice atunci când se creează pagini pentru conținut dinamic.





Pentru un blog, puteți utiliza o rută dinamică pentru a crea adrese URL pe baza titlurilor postărilor de pe blog. Această abordare este mai bună decât crearea unei componente de pagină pentru fiecare postare.





Puteți crea rute dinamice în Next.js definind două funcții: getStaticProps și getStaticPaths.





controlerul ps4 nu se va conecta la ps4 cu USB
REALIZAREA VIDEOCLIPULUI ZILEI

Crearea unei rute dinamice în Next.js

Pentru a crea o rută dinamică în Next.js, adăugați paranteze la o pagină. De exemplu, [params].js, [slug].js sau [id].js.

Pentru un blog, ai putea folosi un slug pentru traseul dinamic. Deci, dacă o postare avea melcul dynamic-routes-nextjs , adresa URL rezultată ar fi https://example.com/dynamic-routes-nextjs.



În folderul pagini, creați un fișier nou numit [slug].js și creați componenta Post care preia datele postării ca prop.

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

Există diferite moduri în care puteți transmite datele postării către Post. Metoda pe care o alegeți depinde de modul în care doriți să randați pagina. Pentru a prelua datele în timpul construirii, utilizați getStaticProps() și pentru a le prelua la cerere, utilizați getServerSideProps().





Utilizarea getStaticProps pentru a prelua datele postărilor

Postările de blog nu se schimbă la fel de des și este suficient să le aduci în timpul construirii. Deci, modificați componenta Post pentru a include getStaticProps().

computerul nu se va conecta la internet Windows 10
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 },
};
};

Funcția getStaticProps generează datele postării redate pe pagină. Utilizează slug-ul din căile generate de funcția getStaticPaths.





Folosind getStaticPaths pentru a prelua căile

Funcția getStaticPaths() returnează căile pentru paginile care ar trebui să fie pre-rendate. Schimbați componenta Post pentru a o include:

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

Această implementare a getStaticPaths preia toate postările care ar trebui redate și returnează slug-urile ca parametri.

În total, [slug].js va arăta astfel:

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;

Trebuie să utilizați getStaticProps() și getStaticPaths() împreună pentru a crea o rută dinamică. Funcția getStaticPaths() ar trebui să genereze rutele dinamice, în timp ce getStaticProps() preia datele redate la fiecare rută.

Crearea rutelor dinamice imbricate în Next.js

Pentru a crea o rută imbricată în Next.js, trebuie să creați un folder nou în dosarul pagini și să salvați ruta dinamică în interiorul acestuia.

vezi cine te-a blocat pe facebook

De exemplu, pentru a crea /pages/posts/dynamic-routes-nextjs, salvați [slug].js în interior /pages/posts.

Accesarea parametrilor URL din rute dinamice

După crearea traseului, puteți prelua parametru URL din ruta dinamică folosind useRouter() Cârlig de reacție .

Pentru paginile/[slug].js, obțineți slug-ul astfel:

import { useRouter } from 'next/router' 

const Post = () => {
const router = useRouter()
const { slug } = router.query
return <p>Post: {slug}</p>
}

export default Post

Aceasta va afișa slug-ul postării.

Rutare dinamică cu getServerSideProps

Folosind Next.js, puteți prelua date în timpul construirii și puteți crea rute dinamice. Puteți folosi aceste cunoștințe pentru a pre-renda pagini dintr-o listă de articole.

Dacă doriți să obțineți date pentru fiecare solicitare, utilizați getServerSideProps în loc de getStaticProps. Rețineți că această abordare este mai lentă; ar trebui să-l utilizați numai atunci când consumați date care se schimbă în mod regulat.