Страница за производ у Redux-у

На овом часу ћемо направити засебну страницу за приказивање информација о одређеном производу.

Отворимо нашу апликацију са производима и у фасцикли products направимо фајл ProductPage.jsx. Како се сећате, сваки наш производ има јединствени id. Захваљујући том id-у моћи ћемо да генеришемо јединствену URL адресу странице за сваки производ. Традиционално ће изгледати као: /products/id123. И id ће бити садржан у његовом динамичком делу (самим рутом ћемо се бавити нешто касније).

Дакле, хајде у ProductPage.jsx да направимо празан компонент ProductPage:

products/ProductPage.jsxexport const ProductPage = () => {}

Прво што ћемо овде урадити - искористићемо хук useParams, да извучемо динамички део URL адресе за страницу производа, на којој се налазимо:

products/ProductPage.jsxexport const ProductPage = () => {
  let params = useParams()
  const { productId } = params
}

Затим по добијеном id-у ћемо потражити потребни производ у слајсу products у store-у, користећи већ познати хук useSelector:

products/ProductPage.jsxconst product = useSelector((state) =>
  state.products.find((product) => product.id === productId)
)

Не заборавимо да увеземо оба хука у фајл:

products/ProductPage.jsximport { useSelector } from 'react-redux'
import { useParams } from 'react-router-dom'

Ако тражени производ не буде пронађен (на пример, корисник је унео неисправну адресу), онда ћемо приказати информацију о томе на екран. На овом кораку код за компонент ProductPage треба да изгледа овако:

products/ProductPage.jsxexport const ProductPage = () => {
  let params = useParams()
  const { productId } = params

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

  if (!product) {
    return <p>Нема таквог производа</p>
  }
}

И остаје нам само да прикажемо добијене податке о производу у верстању:

products/ProductPage.jsxreturn (
  <div>
    <h2>{product.name}</h2>
    <p>Опис: {product.desc}</p>
    <p>Цена: {product.price}</p>
    <p>Количина:{product.amount}</p>
  </div>
)
Задание 1

Отворите вашу апликацију са студентима. У фасцикли students направите фајл StudentPage.jsx, у којем ћете добијати и приказивати информације о одабраном студенту.

Задание 2

Уз помоћ react-redux хука useSelector добијте потребне информације о студенту, како је приказано на часу.

Задание 3

Прикажите у компоненти добијене информације о студенту на екран.