从辅助函数调用redux-thunk动作是反模式的吗?

时间:2017-04-04 16:39:31

标签: reactjs redux anti-patterns redux-thunk

我有一个辅助函数,它是一个获取请求构建器。它从参数创建对象并调用获取请求。然后,如果服务器的答案正常,它会检查请求的结果。如果服务器以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);

如果没有,那么最好的方法是什么。

0 个答案:

没有答案