Использование редукса, наблюдаемого с помощью axios - PullRequest
0 голосов
/ 25 октября 2019

Добрый день,

Я пытаюсь обновить свою базу данных через эпос и затем отправить ответ обратно, чтобы обновить магазин. Однако, хотя действие в конечном итоге отправляется в мой магазин, полезная нагрузка не определена. Я понимаю, что это некоторая проблема с 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 };
    )
  );

Мои аксиосы:

export const updateArticle = async article => {
  const response = await axios.post(`/articles/updateArticle`, article);
  return response.data;
};

1 Ответ

0 голосов
/ 25 октября 2019

Для начала вы можете использовать с обещаниями, поэтому я не думаю, что есть необходимость использовать await в updateArticle. Кроме того, на карте вы получаете доступ к полезной нагрузке из действия, но действие в области действия этой функции уже является ответом на запрос. Попробуйте это:

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);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...