Где я могу делать вызовы axios / fetch в реагирующих приложениях при использовании Redux? - PullRequest
0 голосов
/ 12 апреля 2019

Я новичок на сцене React и Redux, поэтому я немного растерялся.

Когда мы хотим создать новое состояние (или изменить предыдущее состояние), мы просто делаем:

store.dispatch({type: "LOAD_SOMETHING_SOMEWHERE", payload: /*some value*/})

и, очевидно, в нашем редукторе мы видим, какое действие вызывается, и применяем полезную нагрузку к свойству объекта состояния, который мы хотим перезаписать.

Итак, мой вопрос - где мне сделать вызов моего REST API в этом уравнении?

Должен ли я сделать это перед отправкой и установить значение полезной нагрузки равным моему ответу?

Так это будет выглядеть примерно так:

const res = axios.get("https://myendpoint.ep/data")...
store.dispatch({type: "LOAD_SOMETHING_SOMEWHERE", payload: res)

Это хороший способ делать вещи?

Извините, я знаю, что это плохой вопрос, но я спешу с моим проектом, и у меня нет времени на учебник или документацию.

1 Ответ

1 голос
/ 12 апреля 2019

Ваше действие может выглядеть примерно так:

export const getDataAction = () => {

  axios.get("https://myendpoint.ep/data")
  .then(function (response) {
    store.dispatch({type: "API_SUCCESS", payload: response);
  })
  .catch(function (error) {
    store.dispatch({type: "API_ERROR", error);
  });

};

Теперь в вашем редукторе вы можете слушать API_SUCCESS и API_ERROR , чтобы получить и сохранить ответ

...