зачем смешивать async await
с then()
придерживаться одного и быть в соответствии с ним.
const setBasic = async ({ id }) => {
const Basic = 1
const response = await appApi.put(`/usersub/${id}`, { Basic });
if (response) {
console.log(response.data)
}
}
const ChargeCard = (dispatch) => async ({
cardNumber,
expiryMonth,
expiryYear,
cvc,
email,
amountInKobo,
id
}) => {
try {
const response = await RNPaystack.chargeCard({
cardNumber: cardNumber,
expiryMonth: expiryMonth,
expiryYear: expiryYear,
cvc: cvc,
email: email,
amountInKobo: amountInKobo * 100
})
if(response) setBasic({ id }) //the function to run if this is successful
} catch {
dispatch({
type: "ADD_ERROR",
payload:
"Something went wrong during payment, please try again, don't worry you have not been charged."
});
}
};
Таким образом, ваш логин последовательный. Тем не менее, я просто хочу упомянуть об этом; Ваша первая функция выглядит как сокращенный способ написания action creators using redux-thunk
, если я прав, я думаю, что вы неправильно передаете dispatch
в первой функции. Вы должны переписать свою функцию следующим образом:
const ChargeCard = ({
cardNumber,
expiryMonth,
expiryYear,
cvc,
email,
amountInKobo,
id
}) => async dispatch => {
try {
const response = await RNPaystack.chargeCard({
cardNumber: cardNumber,
expiryMonth: expiryMonth,
expiryYear: expiryYear,
cvc: cvc,
email: email,
amountInKobo: amountInKobo * 100
})
if(response) setBasic({ id }) //the function to run if this is successful
} catch {
dispatch({
type: "ADD_ERROR",
payload:
"Something went wrong during payment, please try again, don't worry you have not been charged."
});
}
};