javascript - ReactJS event.preventDefault(); 不是函数
问题描述
我试图提交表单数据,我的主要要求是整个页面不应该在表单提交时重新加载。因此我尝试添加 event.preventDefault(); 在我的表单提交功能中,但它给了我一个错误。
我尝试了其他各种stackoverflow答案中提到的各种解决方案,但没有一个奏效。
constructor(props){
super(props);
this.state = {
rating:5,
review:"",
user:""
}
this.handleSubmit = this.handleSubmit.bind(this);
}
async handleChange(event) {
const name = event.target.name;
//console.log(name);
this.setState({ [name]: event.target.value})
//console.log(this.state);
}
handleSubmit(event,type,id) {
const data = new FormData(event.target);
alert(event);
console.log("event",event);
event.preventDefault();
data.append("type",type)
fetch('http://localhost:10000/movie/addreview/'+id, {
method: 'POST',
body: data,
});
}
下面是我的表格
<form onSubmit={this.handleSubmit(this,type,id)} target="#">
<div className="ratingfield">
<h1 className="ratingtext">Enter Username </h1>
<input name="user" onChange={this.handleChange.bind(this)} value={this.state.user} className="input" size="10"></input>
</div>
<br/>
<br/>
<div className="ratingfield">
<h1 className="ratingtext">Enter Rating from 1-10</h1>
<input name="rating" onChange={this.handleChange.bind(this)} value={this.state.rating} className="input" size="4"></input>
</div>
<br/>
<br/>
<center><h1 className="new"> Enter Review</h1></center>
<center><textarea name="review" onChange={this.handleChange.bind(this)} className="message" rows="10" cols="50"></textarea></center>
<center><input type="submit" className="sbtbtn"></input></center>
</form>
任何解决方案都会非常有帮助。
解决方案
您将this
对象传递给函数而不是event
. 你必须通过event
:
<form onSubmit={ (event) => this.handleSubmit(event, type, id) } target="#">
或:使用.bind()
<form onSubmit={ this.handleSubmit.bind(this, type, id) } target="#">
推荐阅读
- arduino - 类型铸造操作
- reactjs - reactjs中如何在渲染前调用函数
- node.js - 未安装 devDependencies 时如何在生产环境中运行构建和测试?
- encoding - 使用 Clion 进行 MinGW-W64 编码
- java - Java线程数量随时间增长的原因
- java - Java ArrayList update with points 似乎用最近的点替换了所述数组中的所有元素
- jmeter - setEndTime 必须在 setStartTime 之后调用
- json - 如何将 JSON 数组中的所有键大写?
- azureservicebus - 无法使用 Azure 服务总线和 rebus 进行发布订阅
- c# - C# TCPClient 监听传入的消息