Тема 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
Після успішного виконання попередніх завдань, доведіть Каталог товарів до хорошої якості, добавляючи в блоки товарів різні картинки, простилізуйте їх.
Добавте більше фільтрів по категоріях.
Доповніть форму для оформлення замовлення.