我在理解代码时遇到问题,无法正常工作。基本上我想验证来自服务器的数据,验证时不会抛出错误,而是在我需要处理响应并抛出提交错误以显示 redux-form 验证错误时给出正确的响应。
以下是我的代码..
onFormSubmit = (values) =>{
this.setState({loading:true});
this.props.validateEmailFromServer(this.props.session,values,(response)=>{
if(response.success === 2){
throw new SubmissionError({email:'Email already Taken', _error:'Failed'});
}
});
}
Action定义如下
export function validateEmailFromServer(session,values,callback){
var url='API_URL';
var response = axios.get(url, null,
getHeaders(session));
return (dispatch) => {
response.then(({data}) => {
if(data.resource.length>0){
callback({success: 2,message:'Email id is not available!'});
}else{
callback({success: 1,message:'Email is available!'});
}
}).catch((error) => {
callback({success: 0, message: error});
});
}
}
我面临的问题是,当我在 onFormSubmit 函数上调用回调时抛出提交错误时,它会自动调用 axios 的错误 block ,我不是能够摆脱它..
我需要帮助来解决这个问题。
谢谢。
最佳答案
谢谢大家的指点,我设法得到了解决方案,我改变了 Action 并直接在onFormSubmit函数中调用axios,如下,它有效..
onFormSubmit = (values) =>{
var getUrl = 'APIURL';
return axios.get(getUrl,getHeaders(this.props.session))
.then(function({data}) {
if(data.resource.length>0)
throw new Error("ValidationError");
else{
console.log("Proceed");
}
}).catch((err) =>{
if(err.message === 'ValidationError')
throw new SubmissionError({email:'Email already Taken', _error:'Failed'});
});
}
希望这可以帮助那些试图找到类似解决方案的人。
感谢您的帮助..干杯。
关于javascript - ReactJS - 使用 axios 响应抛出提交错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009599/