使用redux flow下载文件

时间:2018-05-09 10:19:14

标签: javascript reactjs redux

无法找到任何描述它的示例。

我正在尝试使用react app创建下载按钮,但是通过redux,即。在行动中我正在连接到url并获取响应的文件(代码200)。

export function sendTimeline(token, timelineObj) {
  const request = axios.post(`muURLGoesHere`, timelineObj, {
    headers: {
      "Content-Type": "application/vnd.ms-excel",
      "X-Accept-Version": "v1",
      Authorization: `Bearer ${token}`
    }
  });

  console.log(request);

  return {
    type: constants.actionTypes.TIMELINE_DATA,
    payload: request
  };
}

如何将其传递给reducer并在反应方面下载。

您可能知道该文章的示例或任何提示。

谢谢

1 个答案:

答案 0 :(得分:1)

我不会以承诺的有效载荷派遣行动。另外使用redux-thunk进行更精细的连续动作调度:

const sendTimeline = (token, timline) => dispatch => {
  dispatch({ type: 'sendtimeline/start' })

  return fetch(…)
    .then(res => res.json())
    .then(json => dispatch({
      type: 'sendtimeline/success',
      payload: json
     }))
    .catch(err => dispatch({
      type: 'sendtimeline/error',
      payload: err,
      error: true
     }))
}

这样你就不必处理reducer中的异步问题,因为动作会处理它。你也可以这样做:

this.props.sendTimeline(…).then(…)

在组件中使用时,因为promise是从动作创建者返回的。

Have a look here as well