【发布时间】:2017-02-07 00:09:13
【问题描述】:
我有一个简单的 React 应用程序,其中包含一个表单,当用户单击提交时,将表单发布到服务器。很简单。
但是 React 会立即连续多次(通常是 4-5 次)触发 AJAX 调用,从而产生各种问题。我不知道为什么——我认为它与 React 的生命周期有关,但我不确定。
我将 axios 用作 AJAX 库,所以问题可能出在该库上(但我认为不是)。
下面是触发代码的方法:
submitEvent(event) {
event.preventDefault();
const apiQueryString = `api/event?${qs.stringify(this.state)}`;
if (this.state.event_title === undefined) {
alert('Event title is required!');
} else {
axios.post(apiQueryString)
.then((result) => {
this.state.id = result.data[0];
store.dispatch({
type: 'ADD_SINGLE_EVENT',
event: this.state,
});
alert('Success creating event!');
this.setState({}); // clear out old values
browserHistory.push('/');
})
.catch((error) => {
console.log(error);
alert('Error with database! See console for output.');
});
}
这是触发此功能的按钮:
<button onClick={this.submitEvent} className="btn btn-primary">Submit</button>
感谢您提供的任何帮助。
【问题讨论】:
-
尝试在表单中添加
onSubmit属性,例如:<form onSubmit={(e) => e.preventDefault()}以防止标准表单行为。让我知道这是否适合您,我会将其添加为答案 -
注意:您应该始终明确指定按钮类型(提交或按钮),因为不同的浏览器具有不同的默认值...
-
@rauliyohmc 似乎不起作用。
-
如果删除highlighted code here会发生什么
标签: javascript ajax reactjs redux axios