Страница для продукта в Redux

В данном уроке мы сделаем отдельную страницу для вывода информации о конкретном продукте.

Откроем наше приложение с продуктами и в папке products создадим файл ProductPage.jsx. Как вы помните, каждый наш продукт имеет уникальный id. Благодаря этому id мы сможем сгенерировать уникальный URL странички для каждого продукта. Традиционно он будет выглядеть как: '/products/id123'. И id будет содержаться в его динамической части (самим маршрутом мы займемся несколько позже).

Итак, давайте в ProductPage.jsx создадим пустой компонент ProductPage:

export const ProductPage = () => {}

Первое, что мы сделаем здесь - воспользуемся хуком useParams, чтобы вытянуть динамическую часть URL для странички продукта, на которой мы находимся:

export const ProductPage = () => { let params = useParams() const { productId } = params }

Далее по полученному id мы поищем нужный продукт в слайсе products в store, используя уже знакомый нам хук useSelector:

const product = useSelector((state) => state.products.find((product) => product.id === productId) )

Не забудем импортировать оба хука в файл:

import { useSelector } from 'react-redux' import { useParams } from 'react-router-dom'

Если же нужного нам продукта не окажется (к примеру, пользователь ввел некорректный адрес), то мы выведем информацию об этом на экран. На этом шаге код для компонента ProductPage должен выглядеть так:

export const ProductPage = () => { let params = useParams() const { productId } = params const product = useSelector((state) => state.products.find((product) => product.id === productId) ) if (!product) { return <p>No such product</p> } }

И нам остается только вывести полученные данные продукта в верстке:

return ( <div> <h2>{product.name}</h2> <p>Description: {product.desc}</p> <p>Price: {product.price}</p> <p>Amount:{product.amount}</p> </div> )

Откройте ваше приложение со студентами. В папке students создайте файл StudentPage.jsx, в котором вы будете получать и выводить информацию по выбранному студенту.

С помощью react-redux хука useSelector получите необходимую информацию о студенте, как показано в уроке.

Выведите в компоненте полученную информацию о студенте на экран.



Чат с GPT Компилятор