Динамические роуты в NextJS
В NextJS можно создавать динамические
роуты. Такие роуты предполагают,
что часть URL может иметь произвольное
значение. Для примера возьмем адрес
/users/1
, в котором вместо
единицы может быть любое число,
технически соответствующее id юзера,
которого мы хотим вывести.
В этом случае нам не нужно создавать
множество папок для каждого возможного
числа. Достаточно объявить эту часть
адреса динамической. В этом случае
все запросы такого вида будет
обрабатывать общий файл page.jsx
.
Для того, чтобы сделать динамический параметр, нужно имя соответствующей папки взять в квадратные скобки. В нашем случае это будет следующая структура папок:
- /app/
- /users/
- /[id]/
- /users/
Давайте сделаем соответствующий компонент:
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
в верстке
компонента выводился соответствующий продукт.