Вероятно, это простой, но у меня есть интерфейс React и серверная часть Express, и я отправляю данные в свой API через форму в интерфейсе.У меня есть две кнопки, одна Отправить и одна Закрыть.Кнопка Закрыть имеет обработчик события щелчка, который закрывает оверлей, не покидая страницу.Я бы хотел, чтобы кнопка «Отправить» работала так же, используя обработчик onSubmit.Однако, несмотря на то, что мои почтовые запросы проходят успешно, они никогда не закрывают оверлей, несмотря на использование той же функции.
Я могу заставить приложение работать, используя res.redirect на моей странице на домашней странице, но в идеале я бы хотел, чтобы страница не перезагружалась.Кроме того, когда мой внутренний сервер отправляет любые данные обратно с помощью res.send () или res.json (), он загружает данные JSON в мой браузер, а не обрабатывает их в моем внешнем интерфейсе (например, показывает все сообщения в моем браузере).Компонент posts.js).
Соответствующий код:
Постпуть
router.post('/', (req, res) => {
Post.create(req.body)
.then(newPost => {
console.log("Success!")
res.status(201).json(newPost);
//res.redirect('http://localhost:3000');
})
.catch(err => {
console.log(err);
res.send(err);
})
})
Функция наложения формы и закрытия
handleClose(e) {
this.props.closeForm();
e.preventDefault();
}
render() {
const postForm =
<div className="form-popup" id="newPost">
<form action="http://localhost:5000/api/posts" method="post" className="form-container">
<h1>New Blog Post</h1>
<div className="formArea formtitle">
<label htmlFor="title"><b>Title</b></label>
<input type="text" placeholder="Blog Post Title" name="title" required />
</div>
<div className="formArea formlocation">
<label htmlFor="location"><b>Location</b></label>
<input type="text" placeholder="Location" name="location" required />
</div>
<div className="formArea postcontent">
<textarea placeholder="Your post here" name="bodyText" required />
</div>
<div className="formArea formsubmit">
<button type="submit" className="btn" onSubmit={this.handleClose} >Post</button>
<button type="submit" className="btn cancel" onClick={this.handleClose}>Close</button>
</div>
</form>
</div>