我遇到了一个非常令人沮丧的问题。如果快速服务器上的简单json常量作为json对象发送,但是当接收到该对象并尝试从客户端上从中提取错误时,来自服务器的json对象将以undefined
形式出现,并且我的生活,我无法弄清楚为什么。
似乎从服务器更改res.status(400).json(errors);
到res.json(errors);
并从客户端代码块中提取错误数据,其中isValid 为true,我能够得到错误消息 - 因此,发送400状态可能与它有关。
有没有其他人参与此问题?我很欣赏有关如何解决的任何建议。
Express - api.js
if( isValid ) {
res.json({success: true});
} else {
const errors = { username: 'This field is required',
email: 'Email is invalid' };
res.status(400).json(errors);
}
SignupForm组件
this.setState({errors: {}, isLoading: true});
this.props.userSignupRequest(this.state).then(
() => {
this.props.history.push('/');
},
({data}) => {
console.log(data); //undefined
this.setState({errors: data, isLoading: false})
}
)
SignupAction.js
import axios from 'axios';
export function userSignupRequest(userData) {
return dispatch => {
return axios.post('http://myhost/api/signup', userData);
}
}
答案 0 :(得分:1)
根据Axios manual:
使用
catch
或传递rejection callback作为then
的第二个参数时,响应将通过error
对象提供,如Handling Errors中所述}。section。
所以:
this.props.userSignupRequest(this.state).then(
() => {
this.props.history.push('/');
},
error => {
const {data} = error.response;
console.log(data);
this.setState({errors: data, isLoading: false});
}
)