Reaction-native onPanResponderMove странное поведение без документации Animated.Event

Я заметил в реагировать родной panResponder вызовы метода onPanResponderMove, когда я использую

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

но когда я пытаюсь использовать:

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

метод не вызывает. Есть ли другой синтаксис javascript, который я могу использовать, чтобы у меня была область действия функции, которую я мог бы использовать рядом с Animated.event

2 ответа

Animated.event() возвращает функцию. Если вы хотите запустить функцию, вы должны вызвать ее. Я предполагаю, что ваш вариант использования заключается в том, что вы хотите выполнять какие-то действия на каждом шаге? В этом случае синтаксис, который вы ищете:

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

Если вы хотите обернуть Animated.event, вам нужно вызвать обертку и вернуть обратный вызов:

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

Это связано с тем, что Animated.event возвращает другую функцию (используя предоставленные сопоставления для привязки данных события к переменным компонента, чтобы он мог вызывать setValue на них), который в свою очередь вызывается обратно прослушивателем onPanResponderMove для события move.

Другие вопросы по тегам