我有一个组件,我想捕获使用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的变量,它具有对该类实例的正确引用。我调试错了?这是预期的行为,还是一个错误?
答案 0 :(得分:2)
您需要绑定panResponderGranted
,因为ES6不会自动绑定功能。
即
onPanResponderGrant : this.panResponderGranted.bind(this),