React native'the'引用dedicatedWorkerGlobalScope而不是类实例

时间:2016-09-25 21:05:59

标签: react-native google-chrome-devtools

我有一个组件,我想捕获使用panResponder的手势事件,但是当尝试远程调试(在chome内)时,'this'上下文引用DedicatedWorkerGlobalScope的实例而不是类实例。

说我有一个简单的组件

import React, { Component } from 'react';

import {
    View,
    Text
    PanResponder
} from 'react-native';


class MyC extends Component
{
    constructor(props)
    {
      super(props);
      this.panResponder = PanResponder.create({

            onStartShouldSetPanResponder : () => true,
            onMoveShouldSetPanResponder : () => true,
            onPanResponderGrant : this.panResponderGranted ,
      })
    }

    panResponderGranted = (e, gestureState) => {

       this.setState({offset : gestureState.dx}); //this.setState is undefined
    }

    render(){

      return (<View />)
    }

}

现在每当我单步执行panResponderGranted函数并查看第一级闭包时,我可以看到有一个名为_this的变量,它具有对该类实例的正确引用。我调试错了?这是预期的行为,还是一个错误?

1 个答案:

答案 0 :(得分:2)

您需要绑定panResponderGranted,因为ES6不会自动绑定功能。

onPanResponderGrant : this.panResponderGranted.bind(this),