Тема 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
Після успішного виконання попередніх завдань, доведіть Каталог товарів до хорошої якості, добавляючи в блоки товарів різні картинки, простилізуйте їх.
Добавте більше фільтрів по категоріях.
Доповніть форму для оформлення замовлення.
Посилання на Тему 9. Введення в React.js з попереднього курсу
Посилання на Тему 1. Створення React.js, проєкт ToDoList
Посилання на Тему 2. Створення React.js Quiz, Temperature App's
Завдання 1. Підсумок покупок
Завдання 2. Фільтрувати товари за категорією або ціновим діапазоном
/* filter.css добавити вкінці App.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;
}
Спочатку створіть новий файл, наприклад filterProducts.js
, у вашому проекті в папці components, не забудьте підключити його в App.js
Створіть метод applyFilters
, який буде викликаний при натисканні кнопки “Застосувати фільтр”. У цьому методі ви можете оновити стан застосовуючи фільтри
Додайте кнопку “Застосувати фільтр” до компонента App.js при застосуванні фільтру показуються товари
Завдання 3. Форма замовлення
Спочатку створіть новий файл, наприклад OrderForm.js
, в якому буде розміщено компонент форми замовлення.
Тепер ви можете імпортувати компонент OrderForm
в App.js
і використовувати його в шаблоні. Для відображення форми замовлення при добавленні товару в кошик і приховування її, коли кошик пустий, вам потрібно налаштувати умовний рендерінг в компоненті App
Для умовного рендерінгу форми замовлення на основі стану можна використовувати умовний оператор (if
). Ось як ви можете здійснити умовний рендерінг форми замовлення на основі значення стану showOrderForm
Вміст кожного із файлів готового додатку Product Catalog