如果条件在错误响应中不起作用

if condition is not working in error response

当我尝试检查响应状态的条件时,它甚至没有进入内部并检查是否应该做什么来比较和显示警报。仅供参考 swal 是一个用于 alert

的 npm 包
onSubmit(values) {
    this.props.signIn(values, response => {
        if (response.status === 200) {
            swal("Login successful", "Signed In", "success");
            this.props.history.push(`/dashboard/${response.data.user_name}`);
        } else {
            console.log("wrong password");
            swal({
                title: "Invalid Email Id or password",
                icon: "warning"
            });
        }
    });
};

Action.js

export function signIn(values, callback) {
    const request = axios.post(`${ROOT_URL}/${APP_ID}/${API_KEY}/users/login`, values).then(() => callback());

    return {
        type: LOGIN_DETAILS,
        payload: request
    };
}

需要 return axios promise,尝试使用该代码

    onSubmit(values) {
    this.props
      .signIn(values)
      .then((response) => {
        swal("Login successful", "Signed In", "success");
          this.props.history.push(`/dashboard/${response.data.user_name}`);
      })
      .catch((error) => {
        console.log("ajax error");
        swal({
          title: "Invalid Email Id or password",
          icon: "warning",
        });
      });
  }

第一个错误是 response.status 将是 undefined 因为你没有在 callback()

中返回响应

第二个是如果 axios.post 失败它永远不会调用 callback(),这意味着整个 if else won没用。

要解决此问题,您只需将操作更改为此

export function signIn(values, callback) {
    const request = axios.post(`${ROOT_URL}/${APP_ID}/${API_KEY}/users/login`, values).then(callback).catch(callback);

    return {
        type: LOGIN_DETAILS,
        payload: request
    };
}

export function signIn(values, callback) {
    const request = axios.post(`${ROOT_URL}/${APP_ID}/${API_KEY}/users/login`, values).then((response) => callback(response)).catch((error) => callback(error));

    return {
        type: LOGIN_DETAILS,
        payload: request
    };
}