Не удается найти переменную (functionName ()) при обновлении родительского состояния из дочернего компонента в React Native - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь обновить положение карты в родительском компоненте в ответной реакции. Мой родительский компонент имеет следующее:

class JarList extends React.Component {
  state = {
    position: { width: cardWidth, height: cardHeight, x: initialCardX, y: initialCardY },
    jarSelected: false,
  };


updateScreenshotPosition(position) {
    springTransition();
    this.setState({ position, jarSelected: true });
  }

  handleScreenShotPosition(position) {
    updateScreenshotPosition(position);
  }

И в функции возврата я передаю дочернему элементу:

  <Screenshot
          handleScreenShotPosition={this.handleScreenShotPosition}
          position={state.position}
          velocityY={this.velocityY}
          movingState={this.gestureState}
          jarSelected={state.jarSelected}
        />

Использование PanGestureHandler из реаги- Обработчик native-жеста дочерний компонент выглядит следующим образом в функции retrun:

 <PanGestureHandler
          onGestureEvent={e => {
            let newPosition = {
              width: position.width,
              height: position.height,
              x: position.x + e.nativeEvent.translationX,
              y: position.y + e.nativeEvent.translationY,
            };
            handleScreenShotPosition(newPosition);
          }}
        >
          <Animated.View
            style={{
              position: 'absolute',
              width: jarSelected ? width : this.animatedWidth,
              height: jarSelected ? height : this.animatedHeight,
              backgroundColor: 'red',
              left: jarSelected ? x : this.animatedX,
              top: y,
            }}
          ></Animated.View>
        </PanGestureHandler>

Поэтому проблема, с которой я сталкиваюсь, заключается в том, что приложение вылетает, говоря, что переменная updateScreenshotPosition не определена; Я действительно не знаю, почему состояние родительского ребенка не меняется.

1 Ответ

0 голосов
/ 27 марта 2020

как объявлено handleScreenShotPosition у ребенка? если это компонент с состоянием, тогда используйте this.props.handleScreenShotPosition(...) Также попробуйте использовать функции стрелок ES2015 для определения в родительском

...