2017-10-19 162 views
0

我有panResponder 我的代码有问题:PanResponder阵营本地参数

componentWillMount() { 
    this._panResponder = PanResponder.create({ 
     onStartShouldSetPanResponder: (evt, gestureState) => false, 
     onStartShouldSetPanResponderCapture: (evt, gestureState) => true, 
     onMoveShouldSetPanResponder: (evt, gestureState) => Math.abs(gestureState.dy) > 5, 
     onMoveShouldSetPanResponderCapture: (evt, gestureState) => true, 
     onPanResponderMove: this._handlePanResponderMove, 
    }); 
    } 

_handlePanResponderMove(event, gestureState) { 
    if (gestureState.dy > current) { 
     console.log("Down"); 
    } else { 
     console.log("Up"); 
    } 
    current = gestureState.dy; 
    } 

componentTag() { 
    return tabTag.map((item, id) => { 
     return(
     <View key={id} > 
      <View {...this._panResponder.panHandlers}> 
       <Icon name="ios-reorder" ></Icon> 
      </View> 
     </View> 
    ); 
    }); 
} 

render() { 
    return (
    {this.componentTag} 
    ); 
} 

我想知道当我在功能_handlePanResponderMove我的阵列的ID的价值,但我不能给参数功能

+0

向我们展示您的整个组件,包括构造函数和所有内容,这些信息太少。 –

+0

我没有构造函数我的PanResponder.create在componentWillMount –

回答

0

componentTag内部,您正在使用this关键字,为此,您需要将this绑定到您的方法。

你需要一个像以下构造函数:

constructor() { 
    this.componentTag = this.componentTag.bind(this); 

    //since you're using this keyword on componentDidMount as well, 
    this.componentWillMount = this.componentWillMount.bind(this); 
} 
+0

我不会说它会修复一切,但它会修复一些'undefined'错误 –

+0

抱歉,但我认为你不明白我想要什么。我想知道我的数组的id在函数_handlePanResponderMove但坦克阅读:) –

+0

你确定该组件是在UI上呈现吗?你能看到屏幕上的东西吗?看起来还有其他一些错误,无论如何,这就是事实,你在一个密钥中使用了id,并且你无法访问你当前的密钥。你需要传递给其他道具。我该怎么做就是创建一个处理程序来设置当前状态并通过该状态进行访问。 –

1

事件参数handlePanResponderMove 给你触摸的目标节点ID。 I.e Event.nativeEvent.target可以帮助你解决这个问题。