@dayna
@dayna
Вот пример реализации компонента формы с использованием React.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import React, { useState } from 'react'; const FormComponent = () => { const [formData, setFormData] = useState({ name: '', email: '', message: '' }); const handleChange = (e) => { const { name, value } = e.target; setFormData(prevState => ({ ...prevState, [name]: value })); }; const handleSubmit = (e) => { e.preventDefault(); // Валидация данных формы if(formData.name === '' || formData.email === '' || formData.message === '') { alert('Please fill in all fields'); return; } // Отправка данных на сервер fetch('https://api.example.com/form', { method: 'POST', body: JSON.stringify(formData), headers: { 'Content-Type': 'application/json' } }) .then(response => { if(!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { // Обработка успешного ответа от сервера console.log(data); }) .catch(error => { // Обработка ошибок console.error('There was an error!', error); }); }; return ( <form onSubmit={handleSubmit}> <input type="text" name="name" value={formData.name} onChange={handleChange} placeholder="Name" /> <input type="email" name="email" value={formData.email} onChange={handleChange} placeholder="Email" /> <textarea name="message" value={formData.message} onChange={handleChange} placeholder="Message"></textarea> <button type="submit">Submit</button> </form> ); }; export default FormComponent; |
Этот компонент формы содержит состояние formData для хранения данных полей формы. Обработчик handleChange обновляет значения состояния formData при изменении значений полей формы. Обработчик handleSubmit отправляет данные формы на сервер и обрабатывает ответ сервера. Валидация данных формы выполняется перед их отправкой на сервер. Обработка ошибок происходит при любых проблемах с отправкой или обработкой ответа сервера.
Чтобы использовать этот компонент формы, вы можете поместить его в компонент родительского уровня вашего приложения:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import React from 'react'; import FormComponent from './FormComponent'; const App = () => { return ( <div> <h1>Contact Form</h1> <FormComponent /> </div> ); }; export default App; |
Теперь компонент формы будет отображаться в пользовательском интерфейсе вашего приложения.