React-Native Axios 请求和未定义的道具
React-Native Axios Request & Undefined props
我正在使用 Axios 对网络 api 和 return 进行轮询。目前,Axios 将 运行 API,我可以记录正确的响应已被 returned,因为它 console.log 说:
(2) [Object, Object]
但是,如果我尝试这样做
this.props.navigator.push({
title: "Results",
component: "SearchResults",
passProps: {response: response}
});
我得到一个“TypeError: Cannot read 属性 'props' of undefined at 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)
});
}
至少可以说我很困惑!
任何帮助都会很棒,干杯!
不知道 _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)
});
}
我正在使用 Axios 对网络 api 和 return 进行轮询。目前,Axios 将 运行 API,我可以记录正确的响应已被 returned,因为它 console.log 说:
(2) [Object, Object]
但是,如果我尝试这样做
this.props.navigator.push({
title: "Results",
component: "SearchResults",
passProps: {response: response}
});
我得到一个“TypeError: Cannot read 属性 'props' of undefined at 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)
});
}
至少可以说我很困惑!
任何帮助都会很棒,干杯!
不知道 _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)
});
}