@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;
|
Теперь компонент формы будет отображаться в пользовательском интерфейсе вашего приложения.