Redux显示来自Nodejs后端的错误消息

时间:2019-01-08 01:16:51

标签: node.js reactjs error-handling redux

每当登录失败时,我都希望在警报中显示从后端接收到的错误消息:

enter image description here

我的登录按钮从我的用户触发此功能。

function login(username, password) {
    return dispatch => {
        dispatch(request({ username }));

        userService.login(username, password)
            .then(
                user => {
                    dispatch(success(user));
                    history.goBack();
                },
                error => {
                    dispatch(failure(error.toString()));
                    dispatch(alertActions.error(error.toString()));
                }
            );
    };

    function request(user) { return { type: userConstants.LOGIN_REQUEST, user } }
    function success(user) { return { type: userConstants.LOGIN_SUCCESS, user } }
    function failure(error) { return { type: userConstants.LOGIN_FAILURE, error } }
}

我的alert.reducer如下所示:

  import { alertConstants } from '../_constants';

export function alert(state = {}, action) {
  switch (action.type) {
    case alertConstants.SUCCESS:
      return {
        type: 'alert-success',
        message: action.message
      };
    case alertConstants.ERROR:
      return {
        type: 'alert-danger',
        message: action.message
      };
    case alertConstants.CLEAR:
      return {};
    default:
      return state
  }
}

在我的App.js中,我通过mapStateToProps收到此状态:

function mapStateToProps(state) {
    const { alert } = state;
    return {
        alert
    };
}

在那之后,我想显示一个带有警报消息的警报:

  {alert.message &&
                          alert(alert.message)
                        }

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

您的动作/减速器代码看起来还不错,我认为这可能与道具名称和本机警报功能发生冲突。 您是否尝试过更改道具名称?像这样:

print()

function mapStateToProps(state) {
  const { alert } = state;
  return {
    alertState: alert
  };
}