Как действовать, если нажатие значка вкладки является текущим экраном с реагирующей навигацией - PullRequest
0 голосов
/ 25 апреля 2018

Как я смогу обнаружить и реализовать обработчик событий, когда пользователь нажимает кнопку вкладки для текущего экрана?

Вариант использования: я пытаюсь реализовать кнопку камеры на вкладкепанель - переход к вкладке камеры открывает окно просмотра камеры и заменяет значок вкладки на значок фотосъемки, снова нажимая эту кнопку вкладки камеры, пока на виде вкладки камеры делается снимок.

В настоящее время я реализуюФункция tabBarOnPress на вкладке навигации, но необходимо передать это событие на сам экран.

  tabBarOnPress: ({ previousScene, scene, jumpToIndex }) => {
    if (previousScene.routeName === 'Camera' && scene.route.routeName === 'Camera') {
      console.log('fire camera picture');
    } else {
      jumpToIndex(scene.index);
    }
  }

В идеале я хотел бы иметь возможность установить onPress или обработчик события на экране камеры.Как мне вызвать метод в целевой сцене - передать пропозицию или переменную навигации и использовать какое-либо событие, полученное от навигации, на самом экране?

1 Ответ

0 голосов
/ 26 апреля 2018

Установка параметра для componentWillMount позволяет мне получить ссылку на метод

Опции TabNavigator:

  tabBarOnPress: ({ previousScene, scene, jumpToIndex }) => {
    if (previousScene.routeName === 'Camera' && scene.route.routeName === 'Camera') {
      scene.route.params.takePicture();
    } else {
      jumpToIndex(scene.index);
    }
  }

CameraScreen

  componentWillMount() {
    this.props.navigation.setParams({
      takePicture: this.takePicture,
    });

    // possibly we might need to also implement below for this issue - 
    // https://github.com/react-navigation/react-navigation/issues/2955
    // InteractionManager.runAfterInteractions(() => {
    //   this.props.navigation.setParams({
    //     scrollToTop: this._scrollToTop,
    //   });
    // })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...