Тема 4. React.js Product Catalog
Створення Каталогу товарів з кошиком покупок
- Новий додаток
- Форматування
- Файли та папки
Створення Product Catalog React.js додатку, введення команд в консоль
D: або C: - переключення між дисками
cd - переходимо в необхідну вам папку
npx create-react-app product-catalog - створення нового React.js проєкту
npx create-react-app - сама команда створення
product-catalog - назва папки в якій буде додаток
cd product-catalog - переходимо в створену папку

Видаляємо непотрібні файли, чистимо index.js та App.js від непотрібних команд
Видаляємо файли: setupTests.js,repor,WebVitals.js,logo.svg,index.css,App.test.js
З файлу index.js видаляємо такі рядки
import './index.css'; import reportWebVitals from './reportWebVitals'; reportWebVitals();
Та коментарі: // If you want...
З файлу App.js видаляємо import logo from './logo.svg';
Тег <div className="app"> і все що всередині нього
В папці src залишаємо лише такі файли:
App.js, App.css, index.js
Скопіюйте стилізацію нижче та замініть її в файлі App.css
- Інформація
Робимо заміну всієї стилізації в файлі App.css на свою, яку копіювали вище
Заготовки файлів для додатку
- Файл index.js
- Файл App.js
Початок роботи із App.js
- Інформація
1. Визначити початковий стан компонента, який містить масив товарів (products) і пустий кошик (cart).
2. Створити метод addToCart, який додає обраний товар до кошика. Метод створює копію поточного кошика та додає до неї новий товар.
3. Створити метод removeFromCart, який видаляє товар з кошика на основі його id. Метод фільтрує поточний кошик та видаляє товар з вказаним id.
- Завдання 2
Додавання можливості фільтрації товарів за категорією або ціновим діапазоном може бути досить обширним завданням, і воно потребує додаткової логіки та структури даних. Давайте спроектуємо цю логіку та створимо окремий файл для фільтрації.
Спочатку створіть новий файл, наприклад filterProducts.jsУ цьому файлі ми створили функцію filterProducts, яка приймає список товарів, категорію та ціновий діапазон, і повертає список товарів, які відповідають вказаним критеріям.
Відредагуйте компонент App.js для використання фільтрації.
Імпортуйте функцію filterProducts і додайте два контроли введення для фільтрації за категорією та ціновим діапазоном. Ці значення фільтрації зберігаються у стані додатка та передаються функції filterProducts, яка фільтрує список товарів згідно зазначених критеріїв.
Добавте CSS до App.css(або створіть окремий файл - не забудьте його підключити) - приклад стилізації нижче
Завдання 2
/* filter.css */
.filter-container {
background-color: #fff;
border: 1px solid #ddd;
padding: 20px;
margin-top: 20px;
}
.filter-container h2 {
font-size: 20px;
margin-bottom: 10px;
}
.filter-label {
font-size: 16px;
margin-right: 10px;
}
.filter-select,
.filter-input {
font-size: 14px;
padding: 5px;
border: 1px solid #ddd;
border-radius: 4px;
margin-right: 10px;
}
.filter-button {
background-color: #007bff;
color: #fff;
border: none;
padding: 10px 15px;
cursor: pointer;
font-size: 14px;
border-radius: 4px;
transition: background-color 0.3s ease;
}
.filter-button:hover {
background-color: #0056b3;
}
- Завдання 3
Додавання форми для введення адреси доставки та інших даних покупця та можливості здійснювати замовлення потребує розширення функціональності вашого додатку.
Спочатку створіть новий файл, наприклад OrderForm.js, в якому буде розміщено компонент форми замовлення.
Тепер ви можете імпортувати компонент OrderForm в App.js і використовувати його в шаблоні. Для відображення форми замовлення при добавленні товару в кошик і приховування її, коли кошик пустий, вам потрібно налаштувати умовний рендерінг в компоненті App.
Завдання 3
/* order-form.css */
.order-form {
max-width: 400px;
margin: 0 auto;
padding: 20px;
background-color: #f5f5f5;
border: 1px solid #ddd;
border-radius: 5px;
}
.order-form h2 {
font-size: 20px;
margin-bottom: 10px;
}
.order-form label {
display: block;
font-size: 16px;
margin-bottom: 5px;
}
.order-form input[type="text"],
.order-form input[type="email"] {
width: 100%;
padding: 10px;
font-size: 14px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 4px;
}
.order-form button[type="submit"] {
background-color: #007bff;
color: #fff;
border: none;
padding: 10px 15px;
cursor: pointer;
font-size: 14px;
border-radius: 4px;
transition: background-color 0.3s ease;
}
.order-form button[type="submit"]:hover {
background-color: #0056b3;
}
Завдання 4
- Завдання 4
Після успішного виконання попередніх завдань, доведіть Каталог товарів до хорошої якості, добавляючи в блоки товарів різні картинки, простилізуйте їх.
Добавте більше фільтрів по категоріях.
Доповніть форму для оформлення замовлення.



