2017-01-11 6 views
1

何のドキュメントAnimated.Eventは、私が反応し、ネイティブonPanResponderMove奇妙な行動私は気づいた

onPanResponderMove: Animated.event([null, {dx: this._pan}]), 

を使用する場合panResponder onPanResponderMoveメソッド呼び出しネイティブ反応しませんが、私は使用しようとすると:

onPanResponderMove: (e, gestureState) => { 
    Animated.event([null, {dx: this._pan}]) 
    }, 

メソッドは呼び出しません。 は、私は私はあなたがAnimated.eventをラップしたい場合は、ラッパーを呼び出し、コールバックを返すために必要なサイドAnimated.event沿っ

答えて

2

を使用することができる機能のスコープを持っているので、使用することができます別のjavascriptの構文があります:

onPanResponderMove: (() => { 
    ...some actions... 
    return Animated.event([null, {dx: this._pan}]); 
    })(), 

Animated.eventが順番に移動イベントにonPanResponderMoveリスナーによってバックと呼ばれている(それはそれでsetValueを呼び出すことができるように、コンポーネント変数にイベントデータをバインドするために与えられたマッピングを使用して)別の関数を返すためです。

+0

「いくつかのアクション」は、PanResponder.create()でのみ実行される自己実行機能を作成しました。ほとんどの場合、これはコンポーネントマウント時のみです。私の理解は、彼のコードで、 "Animated.eventの横に沿って"いくつかのアクションを実行したいということです。 onPanResponderMoveが呼び出されるたびに呼び出されます。 – dazweeja

+0

あなたは正しいです。明確化のためにありがとう! – fcFn

1

Animated.event()は関数を返します。関数を実行するには、関数を呼び出す必要があります。私はあなたのユースケースが、あなたが移動ごとにいくつかのアクションを実行したいと思っていると仮定していますか?その場合、あなたが探している構文は次のようになります:

onPanResponderMove: (e, gestureState) => { 
    ...some actions... 
    Animated.event([null, {dx: this.state.pan.x}])(e, gestureState); 
    },