React Native Gesture Handler не вызывает события - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь использовать response-native-reanimated с response-native-gesture-handler, но у меня проблема с его работой. Кажется, что обработчик жестов не запускает события. Я выполнил инструкции по установке response-native-gesture-handler, обновил CLI, добавил код в MainActivity. java (https://docs.swmansion.com/react-native-gesture-handler/docs/#android)

Я использую RN@0.63.2 , node@10.18.0 и react-native-gesture-handler@1.7.0

В настоящее время я следую этому руководству , но я не могу заставить работать PanGestureHandler, и он также не работает с TapGestureHandler. Вот код (который в основном является кодом из учебника):

import {PanGestureHandler, State} from 'react-native-gesture-handler';
import React, {Component} from 'react';
import {Text, View, StyleSheet} from 'react-native';
import Animated from 'react-native-reanimated';

const {event, Value, cond, eq, add, set} = Animated;

const styles = StyleSheet.create({
  box: {
    backgroundColor: 'red',
    width: 200,
    height: 200,
    alignSelf: 'center',
  },
});

function interaction(gestureTranslation, gestureState) {
  console.log('test');
  const start = new Value(0);
  const dragging = new Value(0);
  const position = new Value(0);

  return cond(
    eq(gestureState, State.ACTIVE),
    [
      cond(eq(dragging, 0), [set(start, position)]),
      set(position, add(start, gestureTranslation)),
    ],
    [set(dragging, 0), position],
  );
}

export class Main extends Component {
  constructor(props) {
    super(props);
    const gestureX = new Value(0);
    const state = new Value(-1);

    this._onGestureEvent = event([
      {
        nativeEvent: {
          translationX: gestureX,
          state: state,
        },
      },
    ]);

    this._transX = interaction(gestureX, state);
  }

  render() {
    return (
      <PanGestureHandler
        onGestureEvent={this._onGestureEvent}
        onHandlerStateChange={this._onGestureEvent}>
        <Animated.View
          style={[styles.box, {transform: [{translateX: this._transX}]}]}
        />
      </PanGestureHandler>
    );
  }
}

export default Main;

У вас есть идеи, почему это не работает?

...