Тема 8. React.js Review & Ratings
Створення Платформи відгуків та рейтингів
- Новий додаток
- Форматування
- Файли та папки
Створення React.js додатку, введення команд в консоль
D: або C: - переключення між дисками
cd - переходимо в необхідну вам папку
npx create-react-app назва додатку - створення нового React.js проєкту
npx create-react-app - сама команда створення
назва додатку - назва папки в якій буде додаток
cd назва додатку - переходимо в створену папку
Видаляємо непотрібні файли, чистимо 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
Одразу можете створити папку Components - папка для компонентів наших файлів
Скопіюйте стилізацію нижче та замініть її в файлі App.css
- Інформація
Робимо заміну всієї стилізації в файлі App.css на свою, яку копіювали вище
Початок роботи із App.js та іншими файлами
- Інформація
1. Створити папку components та добавити нові компоненти Product.js, Review.js, ReviewForm.js одразу підключіть та виведіть їх в App.js
2. Нижче код кожного із файлів, вставте цей код у свої створені файли.
3. Добавлено лише 2 продукти, за бажанням можете збільшити їх кількість в файлі App.js
Завдання 2
- Інформація
Друге завдання зв'язане з вдосконаленням коду, для реалізації вибору зірочок чи сердечок замість числового рейтингу можна використовувати власний компонент оцінки.
1. Створення компонента оцінки (Rating.js
): Створіть новий компонент, який буде відповідати за відображення оцінки вибраним елементом, таким як зірочка чи сердечко.
2. Створення стилів для компонента оцінки (Rating.css
): Створіть стилі для компонента оцінки, де буде можливість вибору типу оцінки (зірка чи серце) та стилізація для вибраних оцінок
3. Оновлення компонента відгуку (ReviewForm.js
): Використовуйте новий компонент Rating
у формі відгуку та оновіть стейт для відстеження обраного типу оцінки.
4. Оновіть головний компонент App.js, щоб включити модальне вікно та передавати дані відгуків для відображення у модальному вікні.
Завдання 3
- Інформація
Ці зміни дозволяють користувачам обирати між зірочками та серцями для відображення свого вибору у відгуках. У коді використовується новий компонент Rating
, який відображається у вигляді обраного типу оцінки та дозволяє користувачеві вибрати кількість оцінок.
ВАЖЛИВО!
Якщо діти виконали усі завдання швидше аніж закінчилось заняття - додайте додаткові завдання:
1. Можливість перегляду усіх відгуків окремо за допомогою кнопки(або приховування)
2. Можливість видалення відгуків
3. Добавити рейтинг під назвою продукту на основі рейтингу відгуків, щоб усі бачили середній рейтинг
Додаткові завдання
- №1
- №2
- №3
1. Можливість перегляду усіх відгуків окремо за допомогою кнопки(або приховування)
2. Можливість видалення відгуків
3. Добавити рейтинг під назвою продукту на основі рейтингу відгуків, щоб усі бачили середній рейтинг
Система відповідей на відгуки: Дозвольте користувачам відповідати на відгуки і створювати дискусії навколо певного продукту чи послуги.
Пошук та сортування: Додайте можливість пошуку відгуків за ключовими словами та сортування їх за різними критеріями.
Завдання 1. Обов'язкові поля
- Інформація
Для валідації полів введення відгуку та виведення спливаючих повідомлень можна використовувати стейт для збереження помилок та відобразити їх поблизу відповідного поля вводу. Давайте оновимо ReviewForm.js
та додамо логіку валідації та відображення повідомлень про помилки
Тепер валідація проводиться перед відправленням відгуку, і помилки відображаються поруч з відповідними полями вводу у вигляді червоних повідомлень про помилки. Замість alert
використовується елемент <span>
для відображення повідомлень про помилки під кожним полем вводу.
Завдання 2. Добавлення модального вікна
// src/App.js
import React, { useState } from 'react';
import './App.css';
import Product from './components/Product';
import Review from './components/Review';
import ReviewForm from './components/ReviewForm';
import ReviewModal from './components/ReviewModal';
const App = () => {
const [reviews, setReviews] = useState({});
const [isModalOpen, setIsModalOpen] = useState(false);
const addReview = (productId, newReview) => {
setReviews({
...reviews,
[productId]: [...(reviews[productId] || []), newReview],
});
};
const openModal = () => {
setIsModalOpen(true);
};
const closeModal = () => {
setIsModalOpen(false);
};
const products = [
{ id: 1, name: 'Product A' },
{ id: 2, name: 'Product B' },
// Add more products as needed
];
return (
<div className="container">
<h1>Review Platform</h1>
{products.map((product) => (
<div key={product.id} className="product">
<Product product={product} onAddReview={(review) => addReview(product.id, review)} />
{(reviews[product.id] || []).map((review, index) => (
<Review key={index} review={review} />
))}
<ReviewForm onSubmit={(review) => addReview(product.id, review)} onOpenModal={openModal} />
</div>
))}
{isModalOpen && (
<ReviewModal reviews={reviews[1] || []} onCloseModal={closeModal} />
{/* Опціонально, використовуйте Reviews для поточного продукту */}
)}
</div>
);
};
export default App;
- Інформація
Оновлення ReviewForm.js
: Додайте стейт для відстеження того, чи відгук має бути показаний у модальному вікні, і функції для відкриття та закриття модального вікна.
Створення нового компонента ReviewModal.js
: Створіть новий компонент для модального вікна, яке буде відображати відгуки.
Оновлення App.js
: Оновіть головний компонент App.js
, щоб включити модальне вікно та передавати дані відгуків для відображення у модальному вікні.
Створення стилів для модального вікна ReviewModal.css
: Створіть стилі для модального вікна.
Завдання 3. Заміна оцінки рейтингу
- Інформація
Ці зміни дозволяють користувачам обирати між зірочками та серцями для відображення свого вибору у відгуках. У коді використовується новий компонент Rating
, який відображається у вигляді обраного типу оцінки та дозволяє користувачеві вибрати кількість оцінок.
ВАЖЛИВО!
Якщо діти виконали усі завдання швидше аніж закінчилось заняття - додайте додаткові завдання:
1. Можливість перегляду усіх відгуків окремо за допомогою кнопки(або приховування)
2. Можливість видалення відгуків
3. Добавити рейтинг під назвою продукту на основі рейтингу відгуків, щоб усі бачили середній рейтинг