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