使用可通过axios观察的redux

问题描述 投票:0回答:1

早安,

im试图通过史诗更新我的数据库,然后将响应分派回更新商店。但是,虽然操作最终将分派到我的商店,但有效载荷是未定义的。我知道updateArticle的获取速度不够快是有问题的。我如何让它等待updateArticle返回响应,然后再分派到商店?

我的史诗:

  action$.pipe(
flowing left-to-right, calling each function with the output of the last one.
    filter(action => action.type === "ADD_ARTICLE_EPIC"), 
    switchMap(
      action =>
        from(updateArticle(action.payload)).pipe(
          map(action => {
            console.log(action);
            return { type: "ADD_ARTICLE", payload: action.payload };
          })
        )
      // return { type: "ADD_ARTICLE", payload: action.payload };
    )
  );

我的axios:

export const updateArticle = async article => {
  const response = await axios.post(`/articles/updateArticle`, article);
  return response.data;
};
reactjs redux redux-observable
1个回答
0
投票

首先,您可以从诺言中使用,因此我认为在updateArticle中不需要使用await。而且,在映射中,您正在从操作访问有效负载,但是该功能范围内的操作已经是来自请求的响应。试试这个:

action$.pipe(
  filter(action => action.type === "ADD_ARTICLE_EPIC"), 
  switchMap(
    action =>
      from(updateArticle(action.payload)).pipe(
        map(response => {
          console.log(response);
          return { type: "ADD_ARTICLE", payload: response.data };
        })
      )
  )
);

然后为您服务:

export const updateArticle = article => {
  return axios.post(`/articles/updateArticle`, article);
};
© www.soinside.com 2019 - 2024. All rights reserved.