我有一个React-Native应用程序,安装组件时,我想通过在我们的服务类中调用一个方法来获取数据,等待该数据返回,然后在setState({})中设置该数据。但是setState({})在返回数据之前被调用。
//组件类
componentDidMount(){
this.getData();
}
async getData() {
const data = await MyService.getData();
this.setState({
blah:data //undefined
});
}
//服务类
let MyService = {
getData:function(){
axios.get(url)
.then(response => response.data)
.then((data) => {
//do stuff
return data;//need to set this to state back in component class
})
.catch(error => {
console.log(error);
});
}
}
module.exports = MyService;
答案 0 :(得分:1)
您必须返回February
呼叫。否则,axios.get
将返回一个空的承诺(带有async function
值的承诺)。
undefined
如果您返回此axios调用,则它本身就是一个承诺,您不必等到解决就可以,因此无需使用let MyService = {
getData: function() {
return axios.get(url)
.then(response => response.data)
.then((data) => {
// do stuff
return data; // need to set this to state back in component class
})
.catch(error => {
console.log(error);
});
}
}
。