АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
⊗jsnxPmRtDy 19 of 57 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Динамические роуты в NextJS

В NextJS можно создавать динамические роуты. Такие роуты предполагают, что часть URL может иметь произвольное значение. Для примера возьмем адрес /users/1, в котором вместо единицы может быть любое число, технически соответствующее id юзера, которого мы хотим вывести.

В этом случае нам не нужно создавать множество папок для каждого возможного числа. Достаточно объявить эту часть адреса динамической. В этом случае все запросы такого вида будет обрабатывать общий файл page.jsx.

Для того, чтобы сделать динамический параметр, нужно имя соответствующей папки взять в квадратные скобки. В нашем случае это будет следующая структура папок:

  • /app/
    • /users/
      • /[id]/

Давайте сделаем соответствующий компонент:

export default function User() { return <p> user </p>; }

При этом заданный нами параметр будет храниться в специальном объекте params. Давайте выведем значение этого параметра:

export default function User({ params }) { return <p> user {params.id} </p>; }

Сделайте роут, обрабатывающий адреса вида /city/:name, где вместо :name может быть любая строка.

Сделайте роут, обрабатывающий адреса вида /show/:country/:city, где вместо :country и :city могут быть любые строки.

Сделайте роут, обрабатывающий адреса вида /post/:id, где вместо :id может быть любое число.

Пусть дан следующий массив:

let posts = [ 'post1', 'post2', 'post3', 'post4', 'post5', ]; export default function Post() { }

Сделайте так, чтобы в зависимости от значения параметра id в верстке компонента выводился соответствующий пост.

Сделайте роут, обрабатывающий адреса вида /prod/:id, где вместо :id может быть любое число.

Пусть дан следующий массив:

let prods = [ { id: 1, name: 'prod1', cost: 100, }, { id: 2, name: 'prod2', cost: 200, }, { id: 3, name: 'prod3', cost: 300, }, ]; export default function Prod() { }

Сделайте так, чтобы в зависимости от значения параметра id в верстке компонента выводился соответствующий продукт.

byru