我正在構建一個React應用程序,並且我注意到我正在使用一個函數兩次以上。所以我決定將它提取出來並且創建一個新的類。它看起來像這樣:加載異步請求的其他類
export default class Fetcher {
constructor(url, callback) {
this.url = url;
this.callback = callback;
}
getData() {
const url = '/wp-json/wp/v2/' + this.url;
const req = new XMLHttpRequest();
req.open('get', url, true);
req.onreadystatechange =() => {
if(req.readyState === 4) {
if(req.status === 200) {
this.callback();
return req.responseText;
} else {
throw new Error();
}
}
}
req.send();
}
}
,我使用它是這樣的:
import Fetcher from '../Tools/XML';
fetchPost() {
const data = new Fetcher('posts?slug='+this.props.params.slug, this.renderPost);
console.log(data.getData());
}
我的問題是,console.log
回報undefined
。我明白髮生這種情況是因爲請求是異步的,並且在查詢完成之前渲染完成。
我的問題是,我該如何克服這個問題?
很好用!謝謝! –
@TomekBuszewski乾杯,不熟悉react.js,但熟悉由於node.js和AngularJS引起的異步JavaScript。 :) –