Используя обещания, но действия не отправляются в порядке - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть приложение React / Redux.Порядок операций в моем действии deletePost не соответствует ожидаемому.Даже думал, что я использую .после того, как мой исторический push происходит до того, как мой DELETE_POST закончилсяВ результате удаленный пост отображается на мгновение после нажатия.

Чтобы подвести итог ... в приведенном ниже действии нажатие на '/ feed' перенаправляет, а затем вызывает componentDidMount () из '/ feed'страница, которая выбирает все сообщения, затем DELETE_POST обновляет состояние.Разве DELETE_POST не должен завершиться, тогда произойдет толчок?

На изображении ниже показано, что действие GET_POSTS, вызванное componentDidMount () после перенаправления, происходит до действия DELETE_POST.

// Delete Post
export const deletePost = (id, history) => dispatch => {
  axios
    .delete(`/api/posts/${id}`)
    .then(res =>
      dispatch({
        type: DELETE_POST,
        payload: id
      })
    )
    .then(history.push('/feed'))
    .catch(err =>
      dispatch({
        type: GET_ERRORS,
        payload: err.response.data
      })
    );
};

enter image description here

1 Ответ

0 голосов
/ 30 декабря 2018

Замените это:

.then(history.push('/feed'))

на это:

.then(() => history.push('/feed'))

then требует, чтобы вы передавали обратный вызов в качестве аргумента, вы передавали значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...