如果条件在错误响应中不起作用
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
};
}
当我尝试检查响应状态的条件时,它甚至没有进入内部并检查是否应该做什么来比较和显示警报。仅供参考 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
};
}