React-Native Axios请求&未定义的道具

时间:2017-06-16 11:51:24

标签: json react-native axios

我使用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)
        });
}

我很难说至少!

任何帮助都会很棒,欢呼!

1 个答案:

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