使用reactjs-redux捕获axios中未定义的参数调用匿名函数
Arguments undefined calling anonymous function inside axios catch using reactjs-redux
我正在尝试创建一个 react redux 中间件来调用 rest api,到目前为止,当我获得 2xx 状态时一切正常,但我对其他状态有问题,那些陷入困境的状态,在调试过程中,我可以在调用我的函数之前看到错误变量的内容,但是当 catch 调用我在我的操作文件中定义的 on_error 函数时,传递的参数未定义,代码非常简单
middleware/api.js
const { method, url, data, on_success, on_error } = action.payload;
axios({
method: method,
url: url,
data: data,
headers: headers
})
.then((response) => {
dispatch(on_success(response));
})
.catch((error) => {
console.log(on_error(error.response))
dispatch(on_error(error.response));
});
action/auth.js
export const authError = (error_response) => {
console.log(error_response);
return {
type: AUTHENTICATION_ERROR,
payload: errorCodesMessage(error_response.status)
}
};
export const logInUser = (username, password) => ({
type: 'API',
payload: {
method: 'post',
url: API_AUTH_URL,
on_success: ({ data }) => setToken(data),
on_error: ({ error_response }) => authError(error_response),
data: JSON.stringify({
password: password,
username: username
})
}
});
您正在将参数作为对象传递
on_error: ({error_response}) => authError(error_response)
而是直接传递
on_error: (error_response) => authError(error_response)
或者,如果上述方法不是您或您的团队遵循的模式,则更改将参数传递给回调的方式:
middleware/api.js
on_error({ error_response: error.response })
我正在尝试创建一个 react redux 中间件来调用 rest api,到目前为止,当我获得 2xx 状态时一切正常,但我对其他状态有问题,那些陷入困境的状态,在调试过程中,我可以在调用我的函数之前看到错误变量的内容,但是当 catch 调用我在我的操作文件中定义的 on_error 函数时,传递的参数未定义,代码非常简单
middleware/api.js
const { method, url, data, on_success, on_error } = action.payload;
axios({
method: method,
url: url,
data: data,
headers: headers
})
.then((response) => {
dispatch(on_success(response));
})
.catch((error) => {
console.log(on_error(error.response))
dispatch(on_error(error.response));
});
action/auth.js
export const authError = (error_response) => {
console.log(error_response);
return {
type: AUTHENTICATION_ERROR,
payload: errorCodesMessage(error_response.status)
}
};
export const logInUser = (username, password) => ({
type: 'API',
payload: {
method: 'post',
url: API_AUTH_URL,
on_success: ({ data }) => setToken(data),
on_error: ({ error_response }) => authError(error_response),
data: JSON.stringify({
password: password,
username: username
})
}
});
您正在将参数作为对象传递
on_error: ({error_response}) => authError(error_response)
而是直接传递
on_error: (error_response) => authError(error_response)
或者,如果上述方法不是您或您的团队遵循的模式,则更改将参数传递给回调的方式:
middleware/api.js
on_error({ error_response: error.response })