Обещание не возвращается в редуксе - PullRequest
0 голосов
/ 03 апреля 2019

Я новичок в react-redux. Вот что я делаю,

У меня есть действие, подобное

export const updateActivePage = (activePage) => {
  return (dispatch) => {
    return dispatch ({
      type: UPDATE_ACTIVEPAGE,
      payload: activePage
    });
  }
}

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

handlePageChange = (pageNumber) => {
    this.props.updateActivePage(pageNumber).then(() => {
      this.props.fetchUserJd(this.props.activePage);
    })
  }



case UPDATE_ACTIVEPAGE:  {
      console.log("action payload", action.payload);
      return {
        ...state,
        activePage: action.payload
      }
    }

Итак, я пытаюсь использовать then, но получаю сообщение об ошибке Uncaught TypeError: _this.props.updateActivePage(...).then is not a function

Так что же я делаю не так?

Ответы [ 2 ]

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

Вы в корне неправильно используете редукс-стук. Предполагаемое использование этой библиотеки - отправка создателя действия (в данном случае updateActivePage), который возвращает функцию, которая вызывается с параметрами состояния. Вы должны отправить updateActivePage, так как это ваш пух. Кроме того, это функция, которая должна содержать ваши вычисления, которые затем должны переводить результаты в состояние. Похоже, что вы вызываете эту функцию напрямую и по какой-то причине ожидаете, что она вернет обещание, а затем каким-то образом выполните некоторые вычисления. Вы должны повторно посетить документы Thunk.

0 голосов
/ 03 апреля 2019
export const updateActivePage = (activePage) => {
  return (dispatch) => {
    return dispatch ({
      type: UPDATE_ACTIVEPAGE,
      payload: activePage
    });
  }
}

отправка не обещание, это просто функция.

export const updateActivePage = (activePage) => {
  return (dispatch) => {
    return new Promise((res, rej) => {
      dispatch ({
        type: UPDATE_ACTIVEPAGE,
        payload: activePage
      });
      res(true);
    })
  }
}

Можете ли вы попробовать вернуть обещание, как я упоминал выше?

...