Я использую API для извлечения данных из Amazon API, и я использую для этого реакцию js.
Проблема в том, что когда я извлекаю их и сохраняю в состоянии, это дает мне ошибку undefined, однако я получаю результат от API. Функция требует времени для получения данных из API, я использую метод извлечения данных, который подходит для узла js, но также работает в режиме реагирования, и я получаю результат, но не могу сохранить его в состоянии. Вот код ниже:
let getReport = {
path:'/',
query:{
Action:'GetReport',
ReportId:'14941942615018036',
Version:'2009-01-01',
}
};
let temp=null;
mws.request(getReport, function(e, result) {
temp=result;
this.setState({amazon_data:result}) // gives undefined error
});
Я думаю, причина в том, что выполнение функции требует времени, и она запускает строку setstate, которая делает результат нулевым, какие-либо предложения о том, как это исправить?
Контент отображается, но я хочу, чтобы он сохранялся в состоянии, когда я это делаю, это дает мне неопределенную ошибку.
this
не определено? Кроме того, вы ранее инициализировали его с помощью this.state = {...}
?
TypeError: Невозможно прочитать свойство setState неопределенного, я получаю эту ошибку
@GrafiCodeStudio да, я инициализировал состояние в конструкторе
пожалуйста, попробуйте console.info(this)
прямо перед temp=results;
Это происходит потому, что this.setState
не является частью области this
внутри вашей функции.
let getReport = {
path:'/',
query:{
Action:'GetReport',
ReportId:'14941942615018036',
Version:'2009-01-01',
}
};
let temp=null;
const _this = this;
mws.request(getReport, function(e, result) {
temp=result;
_this.setState({amazon_data:result}) // this works because _this references the outer this
});
Это должно работать, или вы можете использовать функции стрелок, как показано ниже.
let getReport = {
path:'/',
query:{
Action:'GetReport',
ReportId:'14941942615018036',
Version:'2009-01-01',
}
};
let temp=null;
mws.request(getReport, (e, result) => {
temp=result;
this.setState({amazon_data:result}) // this works because the arrow function binds the outer this to the function
});
Показать содержание результатов по
console.info(result)