Javascript TypeError:无法读取react js中未定义的属性'preventDefault'
我对react和js都是新手,我正在学习一门关于react的速成课程。我在课程的某个时候遇到了这个错误 当我打开chrome时,即使在控制台上显示编译成功,我也会在chrome上看到这个错误。 我环顾了一下网站上的其他话题,但没有人回答我的问题 这是有关的两个文件 AddTodo.jsJavascript TypeError:无法读取react js中未定义的属性'preventDefault',javascript,reactjs,Javascript,Reactjs,我对react和js都是新手,我正在学习一门关于react的速成课程。我在课程的某个时候遇到了这个错误 当我打开chrome时,即使在控制台上显示编译成功,我也会在chrome上看到这个错误。 我环顾了一下网站上的其他话题,但没有人回答我的问题 这是有关的两个文件 AddTodo.js export class AddTodo extends Component { onSubmit = (e) => { e.preventDefault(); this
export class AddTodo extends Component {
onSubmit = (e) => {
e.preventDefault();
this.props.addTodo(this.state.title);
this.setState({ title: '' });
}
render() {
return (
<form style = {{display:'flex'}} onSubmit={this.onSubmit()} >
<input type="text" name='title' style = {{flex:'10' , padding:'5px'}} placeHolder="Ajouter une Tâche..." value={this.state.value} onChange={this.onChange}/>
<input type = "submit" value="Ajouter" className="btn" style = {{flex:'1'}} />
</form>
)}
App.js
addTodo = (title) => {const newTodo = {id : 5,title,completed : false,}
render() {
return (
<div className="App">
<div className="container">
<Header />
<AddTodo addTodo ={this.addTodo}/>
<Todos todos={this.state.todos} markComplete={this.markComplete} delTodo={this.delTodo} />
</div>
</div>
);
}将onSubmit={this.onSubmit}替换为onSubmit={this.onSubmit},否则无法访问e参数
将onSubmit={this.onSubmit}替换为onSubmit={this.onSubmit},否则无法访问e参数
在onSubmit上分配函数时出现问题:
根据您的代码onSubmit={this.onSubmit},它不会赋值,而是在提交时使用render本身执行代码。在onSubmit上赋值函数时出现问题:
根据您的代码onSubmit={this.onSubmit},它不会赋值,而是使用render本身执行代码,而不是在提交时执行代码。您正在立即执行函数: 这意味着两件事: 没有向其传递事件参数,因此出现错误。 函数的结果被用作提交处理程序,该处理程序也未定义。 不执行函数,只是将函数本身作为引用传递给系统,以便在提交表单时执行:
您正在立即执行该函数: 这意味着两件事: 没有向其传递事件参数,因此出现错误。 函数的结果被用作提交处理程序,该处理程序也未定义。 不执行函数,只是将函数本身作为引用传递给系统,以便在提交表单时执行:
<form style = {{display:'flex'}} onSubmit={this.onSubmit} >
<input type="text" name='title' style = {{flex:'10' , padding:'5px'}} placeHolder="Ajouter une Tâche..." value={this.state.value} onChange={this.onChange}/>
<input type = "submit" value="Ajouter" className="btn" style = {{flex:'1'}} />
</form>
<form style = {{display:'flex'}} onSubmit={this.onSubmit} >
onSubmit={this.onSubmit()}
onSubmit={this.onSubmit}