Получение данных из store в компоненте в Redux

На этом занятии мы выведем данные из store в React компоненте.

Откроем наше приложение с продуктами, зайдем в папку parts/products и создадим в ней файл ProductsList.jsx. Для начала импортируем в него хук useSelector, с помощью которого будем получать данные из store:

parts/products/ProductsList.jsximport { useSelector } from 'react-redux'

Теперь давайте получим продукты из store. Функцию-селектор мы не будем создавать отдельно, пропишем ее код сразу в параметре для useSelector:

parts/products/ProductsList.jsxexport const ProductsList = () => {
  const products = useSelector((state) => state.products)
}

Затем мы выведем продукты стандартным способом в теле функции ProductsList после строчки с получением продуктов, используя map:

parts/products/ProductsList.jsxconst dispProducts = products.map((product) => (
  <div key={product.id}>
    <h3>{product.name}</h3>
    <p>{product.desc.substring(0, 100)}</p>
    <p>Price: {product.price}</p>
    <p>Amount: {product.amount}</p>
  </div>
))

А ниже выведем dispProducts в следующей верстке:

parts/products/ProductsList.jsxreturn (
  <div>
    <h2>Products</h2>
    {dispProducts}
  </div>
)

Теперь осталось отобразить наш список продуктов на главной страничке. Откроем файл root.jsx и исправим заголовок:

app/root.jsx<h2>This is my first Redux app!</h2>

На следующий:

app/root.jsx<h2>My Products App</h2>

Затем импортируем в файл компонент ProductsList:

app/root.jsximport { ProductsList } from '../parts/products/ProductsList'

И вставим его в див с айди main-page сразу после закрывающего тега hr:

app/root.jsx<ProductsList />

Запускаем наше приложение. Наш список из двух продуктов успешно вывелся на главной страничке.

Задание 1

Откройте ваше приложение со студентами. Создайте файл StudentsList.jsx в папке students.

Задание 2

Получите студентов из store с помощью хука useSelector, как описано в уроке. Отобразите все поля с информацией о студентах из стейта, воспользовавшись map.

Задание 3

Импортируйте полученный компонент StudentsList в root.jsx и выведите его на главной страничке. Убедитесь, что вся информация о студентах отобразилась на экране.