(React / Redux) Отправка 2-х действий после выполненного обещания - PullRequest
0 голосов
/ 28 апреля 2020

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

Этот код ломается:

 axios
    .post('http://localhost:4000/api/users/saveUser', user, config)
    .then((res) =>
      dispatch({
        type: ADD_USER,
        payload: res.data,
      })
    )
    .then((res) =>
      dispatch({
        type: REGISTER_SUCCESS,
        payload: res.data,
      })
    )
    .catch((err) =>
      dispatch(returnErrors(err.response.data, err.response.status))
    )

Как мне сделать это правильно?

1 Ответ

1 голос
/ 28 апреля 2020

Просто отправьте их обоих в одном и том же блоке.

axios
  .post('http://localhost:4000/api/users/saveUser', user, config)
  .then((res) => {
    dispatch({
      type: ADD_USER,
      payload: res.data,
    });
    dispatch({
      type: REGISTER_SUCCESS,
      payload: res.data,
    });
  })
  .catch((err) =>
    dispatch(returnErrors(err.response.data, err.response.status))
  );

В противном случае в конце первого блока затем вам нужно будет вернуть res, чтобы второй блок имел доступ к res. .

axios
  .post('http://localhost:4000/api/users/saveUser', user, config)
  .then((res) => {
    dispatch({
      type: ADD_USER,
      payload: res.data,
    });
    return res;
  })
  .then((res) =>
    dispatch({
      type: REGISTER_SUCCESS,
      payload: res.data,
    })
  )
  .catch((err) =>
    dispatch(returnErrors(err.response.data, err.response.status))
  );
...