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
                });
            }

这样控制,感觉就是不对劲啊

阅读 2.5k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏