我使用Axios来调查web api以返回一些内容。目前,Axios将运行API,我可以记录返回正确的响应,因为它控制台.log说:
(2) [Object, Object]
但是,如果我尝试
this.props.navigator.push({
title: "Results",
component: "SearchResults",
passProps: {response: response}
});
我得到一个" TypeError:无法读取属性'道具'在eval中未定义"并在包含 this.props.navigator.push 的行中发生错误。
相关代码:
_axiosFetch(searchString) {
var queryURL = 'http://mourningafter.eu/DataService.php?state=get&name=' + searchString
axios.get(queryURL)
.then(function (response) {
console.log(response)
this.props.navigator.push({
title: "Results",
component: SearchResults,
passProps: {response: response}
});
})
.catch(function (error) {
console.log(error)
});
}
我很难说至少!
任何帮助都会很棒,欢呼!
答案 0 :(得分:3)
不知道_axiosFetch
调用的上下文是什么,但我们假设它引用了您的组件。然后,关注.then(function(response){})
回调 - 它会更改上下文而不再引用组件,因此,您无法在回调中调用this.props...
。
使用箭头功能将上下文绑定到回调函数
_axiosFetch(searchString) {
var queryURL = 'http://mourningafter.eu/DataService.php?state=get&name=' + searchString
axios.get(queryURL)
.then((response) => {
console.log(response)
this.props.navigator.push({
title: "Results",
component: SearchResults,
passProps: {response: response}
});
})
.catch(function (error) {
console.log(error)
});
}