这是action
return (dispatch) => {
dispatch({'type': TYPES.LOADING});
userService.getUser(id).then((data) => {
dispatch({'type': TYPES.LOADING_STOP});
}).catch((error) => {
dispatch({'type': TYPES.LOADING_STOP});
dispatch({'type': TYPES.SHOW_MESSAGE, text: error.message});
});
}
页面
if(this.props.message && this.props.message.show) {
this.setState({
messageShow: this.props.message.show
});
}
这样控制,感觉就是不对劲啊
我的是直接在actioin里面的,和http模块里面写的,如果个后端约定好ajax
返回状态码对应的错误就可以直接封装在http公用方法里面了;
let instance = axios.create({
baseURL: baseUrl,
timeout: 1000 * 10,
headers: {'tokenId': user.tokenId},
validateStatus: status => {
// 如果是200和299之间 就不处理后面
if (status >= 200 && status < 300) {
return status >= 200 && status < 300;
}
switch (status) {
case 404:
message.error('错误代码:404 !');
break;
case 500:
message.error('服务器异常,请联系网站管理员');
break;
}
}
});
////////
switch (response.data.status) {
case 1:
//Ok
//break;
return response;
case 2:
if(response.data.data){
if(typeof(response.data.data)=='string'){
message.error(response.data.data);
}else{
message.error(response.data.data[0].message);
}
}else{
message.error(response.data.msg);
}
break;
case 9:
//tokenId过期
Storage.set('user', '');
browserHistory.push('/login');
return undefined;
}
还有即使要在页面调用也不应该用setState方法吧,既然用了rudux,他会自动管理状态了不要要去手动渲染吧