this.props在fetch响应中未定义 - 反应原生

时间:2016-10-12 14:11:54

标签: javascript react-native

我使用fetch使用PUT方法将一些JSON数据发送到服务器。 当且仅当服务器响应为正时,我想弹出到上一页。

这是我的代码:

async  myPutFunction() {

    console.log(this.props); //here props are defined!

    var dataArray=[]; //array with data to be sent

    //operations on dataArray

    await fetch('http://myURL', {
      method: 'PUT',
      headers: {
         'Accept': 'application/json',
         'Content-Type': 'application/json',
      },
      body: JSON.stringify(dataArray)
    }).then(function(res) {
      if (res.status===200) {
        console.log("OK!")
        console.log(this.props); //here props are undefined
        this.props.navigator.pop();
      } else {
        console.log("error: "+res.status);
      }
    })
}

然而,在'然后'阻止道具是未定义的,this.props.navigator.pop()会抛出异常。

我的put函数在render()中以这种方式调用:

<TouchableOpacity style={styles.saveStyle}
                        activeOpacity={0.5}
                        onPress={this.myPutFunction.bind(this)}>
        <Image source={saveImg} style={{resizeMode: 'cover'}} />
</TouchableOpacity>

我无法弄清楚为什么道具在代码部分中未定义,而在myPutFunction()的其余部分中定义

1 个答案:

答案 0 :(得分:7)

正如您对myPutFunction所做的那样,您必须在当时的回调中bind this

then(function(res) { /*...*/}.bind(this))