Скриншот архива с проектом


Структура проекта

Задание
Разработать магазин оптики на React.js
Функционал программы
Как такового функционала нет, так как нет бэкенда для полноценного функционирования. Но есть корзина и оформление заказа в штатном режиме. Есть форма обратной связи.
- корзина с увеличением кол-ва товаров в корзине
- форма оформления заказа
- форма обратной связи
Фрагмент программного кода
import React, { Component } from "react";
import contactsImage from "../images/contact_woman.png";
import bubblesImage from "../images/bubbles.png";
export class Contacts extends Component {
state = {
name: "",
phone: "",
message: "",
};
handleChange = (event) => {
const { name, value } = event.target;
this.setState({
[name]: value,
});
};
handleSubmit = (event) => {
event.preventDefault(); // Предотвращаем стандартное поведение формы
const { name, phone, message } = this.state;
// Сбор данных в объект
const formData = {
name,
phone,
message,
};
console.log("Данные формы:", formData);
alert("Форма успешно отправлена!");
this.setState({
name: "",
phone: "",
message: "",
});
};
render() {
const { name, phone, message } = this.state;
return (
<section className="contact-section" id="contacts">
<div className="container">
<div className="common-title">
{" "}
Свяжитесь с <span>НАМИ</span>
</div>
<img src="/images/loading-150-1.gif" data-src={bubblesImage} alt="bubbles" class="contact-bg-image" />
<div className="contact-block">
<div className="contact-form">
<div className="contact-form-text">
Откройте для себя четкость зрения с нашими премиальными очками и
линзами! Подберите идеальный аксессуар и насладитесь качеством
каждого взгляда.
</div>
<div className="contact-form-inputs">
<input
id="name"
type="text"
name="name"
placeholder="Ваше имя"
value={name}
onChange={this.handleChange}
required
/>
<input
id="phone"
type="text"
name="phone"
placeholder="Ваш телефон"
value={phone}
onChange={this.handleChange}
required
/>
<textarea
id="text"
name="message"
rows="4"
placeholder="Ваше сообщение"
value={message}
onChange={this.handleChange}
required
></textarea>
<button
className="submit-btn"
id="contact-action"
onClick={this.handleSubmit}
>
Отправить
</button>
</div>
</div>
<div className="contact-block-image">
<img
src="/images/loading-150-1.gif" data-src={contactsImage}
alt="Contact Visual"
className="contact-optics"
/>
</div>
</div>
</div>
</section>
);
}
}
export default Contacts;
Пояснения по запуску программы
Все стандартно - Node.js - Visual Studio Code - Расширения для React. Запуск - npm start. Но перед этим в папке с проектом shop - npm install - восстанавливаем все модули и сверяемся с файлом package.json в зависимостях должно быть следующее -

Телеграм
-