有人可以告诉我,我在这里做错了什么?我对React很新,我读过的所有内容都说这应该有用。我正在尝试在提交表单时调用函数“addItem”,但是console.log在页面加载时抛出错误“预期onSubmit监听器是一个函数,而不是类型为boolean”。谢谢!
af.getAuth()
答案 0 :(得分:1)
尝试将render
和addItem
更改为以下内容:
addItem(e){
e.preventDefault();
{/* add the rest of the function here */}
}
render(){
return(
<div className="box-wrapper">
<form onSubmit={this.addItem.bind(this)}>
<input
href={(a) => this._inputElement = a}
placeholder={this.props.placeHolder}
type="text"
/>
<button type="submit" onClick={this.addItem.bind(this)}>Submit</button>
</form>
<List entries={this.state.items} />
</div>
)
}
我做了两个重要的改变:
将e.preventDefault();
添加到addItem
方法,这将阻止默认行为。
在“提交”按钮中添加了onClick
处理程序,并将addItem
方法作为目标可执行文件传入。
答案 1 :(得分:1)
首先必须删除event.preventDefault。它限制了网页的默认行为。将一个onClick事件监听器添加到提交,以便在按钮单击时执行该功能。
`import React, { Component } from 'react';
import App from "./App"
import List from "./List"
class AddTodo extends Component{
constructor(){
super();
this.state = {
items: []
}
}
addItem(e){
var itemArray = this.state.items;
itemArray.push({
text: this._inputElement.value,
key: Date.now()
})
this.setState({
items: itemArray
})
this._inputElement.value = "";
console.log(itemArray)
// e.preventDefault(); remove this prevent default
}
render(){
return(
<div className="box-wrapper">
<form onSubmit={this.addItem.bind(this)}>
<input href={(a) => this._inputElement = a} placeholder={this.props.placeHolder} type="text"></input>
<button type="submit" onClick={this.addItem.bind(this)}>Submit</button>
</form>
<List entries={this.state.items} />
</div>
)
}
}
export default AddTodo;`
答案 2 :(得分:0)
我没有收到任何错误。但是您应该将ActivityCompat.requestPermissions
放在preventDefault
的顶部,这样可以防止页面重新加载。通过将addItem
属性分配给输入并通过ref
进行访问,可以更好地处理输入值。
this.refs.refName