Я делаю асинхронный вызов, используя выборку, а затем пытаюсь установить состояние, отправляя действие на основе результата возвращенных данных json.
Я использую считыватель QR-кода для чтения кода, который передается моему методу didScan.
didScan(code) {
if (this.state.showCamera){
this.props.pushNewRoute('finder');
getAppointment(code)
.then((appointment)=>{
if (appointment.valid){
this.props.appointmentDetails(appointment);
this.props.resetRoute('summary');
}else{
this.props.resetRoute('error');
}
})
.catch((error) => {
this.props.resetRoute('error');
});
this.setState({showCamera: false});
}
}
Я использую react-redux для привязки своих действий к моим диспетчерам следующим образом:
function bindActions(dispatch){
return {
resetRoute:(route)=>dispatch(resetRoute(route)),
pushNewRoute:(route)=>dispatch(pushNewRoute(route)),
appointmentDetails:(details)=>dispatch(appointmentDetails(details))
}
}
export default connect(null, bindActions)(Scanner);
но когда обещание возвращается моей службой getAppointment, оно терпит неудачу при попытке выполнить маршрутизацию.
this.props.resetRoute('summary');
Ошибка
Возможное отклонение необработанного обещания{id:0} Редюсеры не могут отправлять действия
Ни один из моих редукторов не отправляет никаких действий, и код работает нормально, когда я вынимаю его из блока Promise .then().
Вот простой сервис получения getAppointment для полноты картины:
export function getAppointment(id:string) {
return fetch('http://myurl/' + id + '/')
.then((response) => response.json())
.catch((error) => {
console.error(error);
return error;
});
}
Любая помощь очень ценится.