REDUX - Как импортировать функцию API, возвращающую Promise, и добавить ее в полезную нагрузку создателя действия

Мой Redux по меньшей мере ржавый, я пытаюсь импортировать функции из API, которые возвращают Promise, это Promise, которое я хочу добавить в полезную нагрузку для создателя действий, но он жалуется на то, что TypeError: Cannot read property 'getBetList' of undefined

Here is my action creator

import { getBetList, getLatestPrices } from '../api/index';
export const GET_BET_LIST = 'GET_BET_LIST';
export const GET_LATEST_PRICES = 'GET_LATEST_PRICES';


export function fetchBetList() {
  const response = this.getBetList();

  return {
    type: GET_BET_LIST,
    payload: response
  }
}

export function fetchLatestPrices() {
  const response = this.getLatestPrices();

  return {
    type: GET_LATEST_PRICES,
    payload: response
  }
}

Я предполагал, что Promise, полученный от API, будет доступен для полезной нагрузки, будет проходить через redux-обещание, и в конце концов я получаю данные, которые мне нужны, но он останавливается с ошибкой, что он не может прочитать getBetList? где я ошибся при импорте здесь?

1 ответ

Вы должны использовать getBetList & getLatestPrices непосредственно, так как вы импортировали его в верхней части файла. Удалить this из строки ниже исправит вашу ошибку.

const response = this.getBetList();
                 ^^^^

И то же самое здесь

const response = this.getLatestPrices();

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

export function fetchLatestPrices() {
  return (dispatch) => {
    getLatestPrices()
      .then(response => dispatch({type: GET_LATEST_PRICES, payload: response}));

  }
}

Больше информации о async actions

Другие вопросы по тегам