Все для робіт з Windows - кращою операційною системою від Microsoft. Ми охоплюємо всі, від програми попередньої оцінки Windows 10 до Windows 11. Надає вам всі останні новини про Windows 10 і не тільки.

Як створити динамічні маршрути в Next.js

48

Динамічні маршрути – це сторінки, які дозволяють використовувати спеціальні параметри в URL-адресі. Вони особливо корисні під час створення сторінок для динамічного вмісту.

Для блогу ви можете використовувати динамічний маршрут для створення URL-адрес на основі заголовків публікацій блогу. Цей підхід кращий, ніж створення компонента сторінки для кожної публікації.

Ви можете створити динамічні маршрути в Next.js, визначивши дві функції: getStaticProps і getStaticPaths.

Створення динамічного маршруту в Next.js

Щоб створити динамічний маршрут у Next.js, додайте до сторінки дужки. Наприклад, [params].js, [slug].js або [id].js.

Для блогу ви можете використовувати слаг для динамічного маршруту. Отже, якби публікація мала слаг dynamic-routes-nextjs, кінцева URL-адреса була б https://example.com/dynamic-routes-nextjs.

У папці pages створіть новий файл під назвою [slug].js і створіть компонент Post, який приймає дані публікації як проп.

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

Є різні способи, якими ви можете передати дані публікації в Post. Вибраний спосіб залежить від того, як ви хочете відобразити сторінку. Щоб отримати дані під час збирання, використовуйте getStaticProps(), а щоб отримати їх за запитом, використовуйте getServerSideProps().

Використання getStaticProps для отримання даних публікації

Повідомлення в блозі змінюються не так часто, і їх достатньо отримати під час створення. Отже, змініть компонент Post, щоб включити 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 генерує дані публікації, які відображаються на сторінці. Він використовує слаг із шляхів, згенерованих функцією getStaticPaths.

Використання getStaticPaths для отримання шляхів

Функція getStaticPaths() повертає шляхи до сторінок, які потрібно попередньо відобразити. Змініть компонент Post, щоб включити його:

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

Ця реалізація getStaticPaths отримує всі публікації, які мають бути відтворені, і повертає слаги як параметри.

Загалом [slug].js виглядатиме так:

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;

Ви повинні використовувати getStaticProps() і getStaticPaths() разом, щоб створити динамічний маршрут. Функція getStaticPaths() має генерувати динамічні маршрути, тоді як getStaticProps() отримує дані, відтворені на кожному маршруті.

Створення вкладених динамічних маршрутів у Next.js

Щоб створити вкладений маршрут у Next.js, вам потрібно створити нову папку в папці pages і зберегти динамічний маршрут у ній.

Наприклад, щоб створити /pages/posts/dynamic-routes-nextjs, збережіть [slug].js у /pages/posts.

Доступ до параметрів URL-адреси з динамічних маршрутів

Після створення маршруту ви можете отримати параметр URL -адреси з динамічного маршруту за допомогою хука useRouter() React.

Для pages/[slug].js отримайте слаг таким чином:

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

Це відобразить слаг допису.

Динамічна маршрутизація за допомогою getServerSideProps

Використовуючи Next.js, ви можете отримувати дані під час збирання та створювати динамічні маршрути. Ви можете використовувати ці знання для попереднього візуалізації сторінок зі списку елементів.

Якщо ви хочете отримувати дані для кожного запиту, використовуйте getServerSideProps замість getStaticProps. Зауважте, що цей підхід є повільнішим; ви повинні використовувати його лише під час споживання даних, які регулярно змінюються.

Джерело запису: makeuseof.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі