2017-10-19 173 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可以幫助你解決這個問題。