Я делаю асинхронный вызов с использованием fetch, а затем пытаюсь установить состояние, отправив действие на основе результата возвращенных данных json.Dispatching Action in Fetch
Я использую считыватель 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});
}
}
Я использую среагировать-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;
});
}
Любая помощь очень ценится.