我有一个辅助函数,它是一个获取请求构建器。它从参数创建对象并调用获取请求。然后,如果服务器的答案正常,它会检查请求的结果。如果服务器以401响应,则应将用户发送到登录页面,并清除auth,这是在行动中完成的。
export const fetchBuilder = (method, url, data, token) => {
const req = {
method,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
credentials: 'same-origin',
};
if (method === 'POST') {
req.body = JSON.stringify(data);
}
const promise = new Promise((resolve, reject) => {
fetch(url, req).then(
(response) => {
if (response.ok) {
resolve(data);
} else {
if (response.code === 401) {
// here code to clear redux store from old token and send to login
}
reject(data);
}
});
},
(error) => {
reject(error);
},
);
});
return promise;
};
问题是,从这个帮助函数调用注销操作是否可以。这意味着我必须将调度传递给这个辅助函数
export const fetchBuilder = (method, url, data, token, dispatch)
为了将它再次传递给像这样的行动
logout()(dispatch);
如果没有,那么最好的方法是什么。