Как создавать динамические маршруты в Next.js

Как создавать динамические маршруты в Next.js

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





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





Вы можете создавать динамические маршруты в Next.js, определяя две функции: getStaticProps и getStaticPaths.





СДЕЛАТЬ ВИДЕО ДНЯ

Создание динамического маршрута в Next.js

Чтобы создать динамический маршрут в Next.js, добавьте скобки на страницу. Например, [params].js, [slug].js или [id].js.

Для блога вы можете использовать слаг для динамического маршрута. Итак, если в сообщении был слаг динамические маршруты-nextjs , результирующий URL-адрес будет https://example.com/dynamic-routes-nextjs.



В папке pages создайте новый файл с именем [slug].js и создайте компонент Post, который принимает данные публикации в качестве реквизита.

лучшие приложения для просмотра бесплатных фильмов
const Post = ({ postData }) => { 
return <div>{/* content */}</div>;
};

Существуют различные способы передачи данных сообщения в сообщение. Выбранный вами метод зависит от того, как вы хотите отображать страницу. Чтобы получить данные во время сборки, используйте 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 внутри /страницы/сообщения.

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

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

как обновить сервисы Google Play

Для 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. Обратите внимание, что этот подход медленнее; вы должны использовать его только при использовании регулярно меняющихся данных.