问题描述
如果axios.post出错,我想防止在反应中打开链接。
我使用了event.preventDefault
,但是它并没有阻止单击按钮打开链接。
这是代码
<Link
to={{
pathname: '/',data: "success",}}
>
<div>
<Button
onClick={this.onSubmit}
variant="contained"
color="secondary"
>
Post
</Button>
</div>
</Link>
onSubmit=(ev)=>{
let data = {
title: this.state.title,content: this.state.content,username: this.state.data.xusername,date: new Date().toUTCString(),};
Axios.post("http://localhost:9000/posts",data)
.then((response) => {
console.log(response);
})
.catch((error) => {
ev.preventDefault();
console.log(error);
});
}
解决方法
在链接中嵌套按钮是您的问题。这意味着,当您单击按钮时,这是按钮事件,您可以阻止默认设置。
如果您希望在axios呼叫完成后重定向到另一个页面,则可以使用以下方法:
<Button
onClick={this.onSubmit}
variant="contained"
color="secondary"
>
Post
</Button>
onSubmit=(ev)=>{
let data = {
title: this.state.title,content: this.state.content,username: this.state.data.xusername,date: new Date().toUTCString(),};
Axios.post("http://localhost:9000/posts",data)
.then((response) => {
console.log(response);
window.location.replace("/yourpage?var1=value"); // Redirect with vanilla js.
this.props.history.push('/yourpage?var1=value&var2=value'); // Redirect with reactjs.
})
.catch((error) => {
console.log(error); // On error,user will experience no change.
});