首页 > toast是写在redux的action里调用吗?

toast是写在redux的action里调用吗?

这是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,他会自动管理状态了不要要去手动渲染吧

【热门文章】
【热门文章】