我正在使用React和TypeScript构建一个简单的用户搜索应用程序。我有一个基本的表单,其中包含一个用于搜索用户的输入文本框和一个用于提交搜索的输入按钮。但是我的onSubmit
方法中的e.preventDefault()
方法似乎不起作用。当我提交时,整个应用程序刷新。实际上,可能根本没有调用onSubmit
。
private handleSubmit = (e: React.FormEvent<HTMLInputElement>) => {
e.preventDefault();
this.props.searchUsers(this.state.text);
this.setState({text: ''});
}
private handleChange = (e: React.FormEvent<HTMLInputElement>) => {
this.setState({text: e.currentTarget.value});
}
public render() {
return (
<div>
<form className="form">
<input
type="text"
name="text"
value={this.state.text}
placeholder="Search Users..."
onChange={this.handleChange}
/>
<input
type="submit"
value="search"
className="btn btn-dark btn-block"
onSubmit={this.handleSubmit}
/>
</form>
</div>
);
}
有什么建议吗?谢谢!
5条答案
按热度按时间mwg9r5ms1#
您在错误的位置添加了
onSubmit
。你应该在
form
中添加,而不是在按钮中。如果您查看文档中的示例,您会看到他们将其添加到
form
中。form
的onSubmit
,您的input
/button
需要具有type="submit"
ffscu2ro2#
你可以简单地这样做:
p4tfgftt3#
另外,除了将事件从onClick移动到onSubmit之外,要从表单中获取事件,请输入React。FormEvent works。
zujrkrfu4#
我通过从handleSubmit函数中删除
e.preventDefault
并在button上添加**onClick={e => {e.preventDefault(); this.handleSubmit()}}**
来修复类似的问题。这是测试和应该工作。
vsnjm48y5#