A dinamikus útvonalak olyan oldalak, amelyek lehetővé teszik egyéni paraméterek használatát egy URL-ben. Különösen előnyösek dinamikus tartalommal kapcsolatos oldalak létrehozásakor.
Egy blog esetében dinamikus útvonalat használhat az URL-ek létrehozására a blogbejegyzések címe alapján. Ez a megközelítés jobb, mint minden bejegyzéshez oldalkomponenst létrehozni.
A Next.js fájlban dinamikus útvonalakat hozhat létre két függvény meghatározásával: getStaticProps és getStaticPaths.
Dinamikus útvonal létrehozása a Next.js-ben
Ha dinamikus útvonalat szeretne létrehozni a Next.js-ben, adjon zárójeleket az oldalhoz. Például [params].js, [slug].js vagy [id].js.
Egy bloghoz használhat egy csigát a dinamikus útvonalhoz. Szóval, ha egy poszton lenne a csigája dynamic-routes-nextjs, az eredményül kapott URL lesz https://example.com/dynamic-routes-nextjs.
Az oldalak mappában hozzon létre egy új fájlt [slug].js néven, és hozza létre a Post komponenst, amely a bejegyzés adatait veszi alapul.
const Bejegyzés = ({ postData }) => {
Visszatérés <div>{/* tartalom */}</div>;
};
A bejegyzés adatait többféleképpen továbbíthatja a bejegyzésnek. A választott módszer attól függ, hogyan szeretné megjeleníteni az oldalt. Az adatok összeállítási ideje alatti lekéréséhez használja a getStaticProps()-t, kérésre pedig a getServerSideProps()-t.
A getStaticProps használata a bejegyzési adatok lekéréséhez
A blogbejegyzések nem változnak olyan gyakran, és elegendő lekérni őket az építési időben. Tehát módosítsa a Post komponenst a getStaticProps() hozzáadásával.
import { getSinglePost } tól től "../../utils/posts";
const Bejegyzés = ({tartalom }) => {
Visszatérés <div>{/* tartalom */}</div>;
};
exportconst getStaticProps = async ({ params }) => {
const hozzászólás = várja getSinglePost (params.slug);
Visszatérés {
kellékek: { ...bejegyzés },
};
};
A getStaticProps függvény előállítja az oldalon megjelenített bejegyzési adatokat. A getStaticPaths függvény által generált útvonalak slugját használja.
A getStaticPaths használata útvonalak lekéréséhez
A getStaticPaths() függvény visszaadja az előre megjelenítendő oldalak elérési útját. Módosítsa a bejegyzés összetevőt, hogy tartalmazza:
exportconst getStaticPaths = async () => {
const útvonalak = getAllPosts().map(({ slug }) => ({ params: { slug } }));
Visszatérés {
utak,
tartalék: hamis,
};
};
A getStaticPaths ezen megvalósítása beolvassa az összes megjelenítendő bejegyzést, és a slug-okat paraméterként adja vissza.
Összességében a [slug].js így fog kinézni:
import { getAllPosts, getSinglePost } tól től "../../utils/posts";
const Bejegyzés = ({tartalom }) => {
Visszatérés <div>{tartalom}</div>;
};exportconst getStaticPaths = async () => {
const útvonalak = getAllPosts().map(({ slug }) => ({ params: { slug } }));
Visszatérés {
utak,
tartalék: hamis,
};
};exportconst getStaticProps = async ({ params }) => {
const hozzászólás = várja getSinglePost (params.slug);Visszatérés {
kellékek: { ...bejegyzés },
};
};
exportalapértelmezett Posta;
Dinamikus útvonal létrehozásához együtt kell használnia a getStaticProps() és getStaticPaths() függvényeket. A getStaticPaths() függvény generálja a dinamikus útvonalakat, míg a getStaticProps() lekéri az egyes útvonalakon megjelenített adatokat.
Beágyazott dinamikus útvonalak létrehozása a Next.js-ben
Ha beágyazott útvonalat szeretne létrehozni a Next.js-ben, létre kell hoznia egy új mappát az oldalak mappájában, és el kell mentenie a dinamikus útvonalat abban.
Például a /pages/posts/dynamic-routes-nextjs létrehozásához mentse el a [slug].js fájlt. /pages/posts.
URL-paraméterek elérése a dinamikus útvonalakból
Az útvonal létrehozása után visszakeresheti a URL paraméter a dinamikus útvonalról a useRouter() használatával Reagálás horog.
A pages/[slug].js esetén a következőképpen szerezze be a slug-ot:
import { useRouter } tól től 'next/router'
const Bejegyzés = () => {
const router = userRouter()
const { slug } = router.query
Visszatérés <p>Bejegyzés: {slug}</p>
}
exportalapértelmezett Hozzászólás
Ez megjeleníti a bejegyzés csigáját.
Dinamikus útválasztás a getServerSideProps segítségével
A Next.js használatával lekérheti az adatokat az összeállítás során, és dinamikus útvonalakat hozhat létre. Ezt a tudást felhasználhatja oldalak előzetes megjelenítésére egy elemlistából.
Ha minden kérésnél adatokat szeretne lekérni, használja a getServerSideProps-t a getStaticProps helyett. Vegye figyelembe, hogy ez a megközelítés lassabb; csak rendszeresen változó adatok fogyasztása esetén használja.