Я использую промежуточное программное обеспечение redux-thunk
(приложение RactNative).Мои создатели действий используются на нескольких экранах, где они отлично работают.Но недавно я добавил новый экран, который также использует тех создателей действий.Проблема в том, что когда я звоню им, они не возвращают Promise
в отличие от других экранов.Я добавил .then
обратный вызов создателю действия, который выдает ошибку, говорящую .then is not a function
.
Вот мой экран:
import ... ;
import { connect } from "react-redux";
import {
cancelAsync,
acceptAsync
} from "../redux/actions";
function PreviewScreen(props) {
const {
...
acceptAsync,
cancelAsync
} = props;
console.log(cancelAsync()); // returns function body: ƒ (dispatch, getState) { ...
const accept = id => {
acceptAsync(id).then(() => {...});
};
const cancel = id => {
cancelAsync(id).then(() => {...});
};
return ...
}
const mapStateToProps = ... ;
const mapDispatchToProps = dispatch => {
return {
dispatch,
cancelAsync,
acceptAsync
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(PreviewScreen);
И это мои создатели действия:
import axios from "axios";
import {
acceptURL,
cancelURL,
} from "../../constants";
export const acceptAsync = id => {
return function(dispatch, getState) {
const request = axios.post(
acceptURL,
{ id },
{
headers: {
Authorization: `Token ${token}`
}
}
);
request
.then(response => {
...
return response;
})
.catch(reason => {
...
return reason;
});
return request;
};
};
export const cancelAsync = (orderID, status) => {
return function(dispatch, getState) {
const request = axios.post(
cancelURL,
{},
{
headers: {
Authorization: `Token ${token}`
}
}
);
request
.then(({ data }) => {
...
return data;
})
.catch(reason => {
...
return reason;
});
return request;
};
};
Чего мне не хватает?Это происходит только на этом экране.
Кусок кода с другого экрана, который работает правильно:
import {
acceptOrderAsync,
cancelOrderAsync,
setNewOrdersAsync
} from "../redux/actions";
function NewOrdersScreen(props) {
const {
...
setNewOrdersAsync,
acceptOrderAsync,
cancelOrderAsync,
navigation
} = props;
...
}
const mapStateToProps = ({ newOrders }) => ({ ...newOrders });
export default connect(
mapStateToProps,
{ acceptOrderAsync, cancelOrderAsync, setNewOrdersAsync }
)(NewOrdersScreen);