我试图从服务器获取数据,并使用我在一个模板reactjs项目中找到的服务函数。我确实从服务器收到了一个非常好的解析器,我可以在服务中看到数组是正常的,但是当将数组交给调用它的组件时就不会了。在组件中,我得到了一个具有这些值(我在控制台中见过)但无法访问它们的诺言对象。我遗漏了什么?
我的组件具有以下功能:
calculate(dict) {
var results = Service.calc(dict)
.catch((err) => {
var errResp = JSON.parse(err.response);
console.log(errResp);
this.setState({responseErrors: errResp});
});
this.setState({results:results._handler});
}当我将结果打印到控制台时,我看到了诺言对象,在_handler.handler内部是一个带有值的值数组,但我无法使用它们。当访问results._handler.handler: undefined时出现了错误。
被叫的服务如下所示:
class Service {
calc(dict) {
return this.handleCalculate(when(request({
url: UserConstants.URL,
method: 'POST',
type: 'json',
data: dict
})));
}
handleCalculate(calcPromise) {
return calcPromise.then(
function(data) {
console.log(data); //Success
return data;
}
)
}同时,我直接在组件中使用ajax调用,而不是服务。但我知道这是错误的做法,我怎么才能做到这一点呢?
发布于 2016-10-27 15:36:52
嗨,基本上你把setState放错地方了。(它立即设置状态,而不等待结果得到解决)。它应该是这样的
calculate(dict) {
var results = Service.calc(dict)
.then(results => {
this.setState({results: results});
})
.catch((err) => {
var errResp = JSON.parse(err.response);
console.log(errResp);
this.setState({responseErrors: errResp});
});
}https://stackoverflow.com/questions/40288376
复制相似问题