我正在构建一个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。 :) –