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)
        });
}