【发布时间】:2023-04-11 02:15:01
【问题描述】:
我在一个反应项目中有一个行为有点奇怪的表单。我已将 e.preventDefault() 附加到我的提交按钮,但由于某种原因,每次单击按钮时页面仍在刷新。有人可以帮我弄清楚为什么会这样吗?这是有问题的组件:
import React, { useState } from 'react';
import './PostForm.css';
import axios from 'axios'
const PostForm = () => {
const [posts, setPost] = useState({
body: '',
author: 'Michael',
});
const onChange = (e) =>{
setPost({...posts, [e.target.name] : e.target.value})
}
const sendPost = (e) => {
e.preventDefault()
try {
const res = axios.post('http://localhost:4000/post', posts);
console.log(res)
} catch (error) {
console.log(error)
}
}
return (
<form className="formContainer">
<div className="form">
<textarea className='formBody' type="text" placeholder="What's new?" name='body' onChange={onChange} />
<button onSubmit={sendPost}>Share</button>
</div>
</form>
);
};
export default PostForm;
【问题讨论】:
-
onSubmit需要在<form>上,而不是随机的<button>。
标签: javascript reactjs forms