React应用Axios请求触发两次排查:非跨域、非严格模式
Axios请求触发两次的疑难排查
我遇到了一个奇怪的问题:通过Axios发起的AJAX请求会触发两次。查了大量资料,找到的类似问题方案都解决不了——要么我没用到对应的方法,要么不存在跨域场景,而且我也没开启Strict Mode,实在没辙了!
相关代码
根组件渲染代码:
root.render( //<React.StrictMode> <App /> //</React.StrictMode> );
表单提交相关代码:
handleSubmit = event => { event.preventDefault(); const data = { name: event.target.elements.name.value }; axios.post(`/api/v2/users/add`, {data}) .then(res => { console.log(res.data.user['name']); }); }; render() { return ( <div> <form onSubmit={this.handleSubmit}> <label> Person Name: <input type="text" name="name"/> </label> <button type="submit">Add</button> </form> </div> ); }
问题细节
事件会触发两次:第一次发送请求payload,第二次接收响应。这太奇怪了!我已经尝试了所有已知方法,比如改用onChange()存入state来获取name字段值,而非直接使用name: event.target.elements.name.value。这只是个30行左右的基础应用,我真不知道接下来该排查什么,是不是漏掉了什么明显的问题?
已排查的相关帖子(均无法解决)
- 《Every axios request firing twice in react-redux app?》:我未使用跨域场景
- 《Events firing twice inside axios interceptor》:不符合我的问题场景
- 《React and Axios fires twice (once undefined, once successfully)》:我没有修改状态
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

