React Native Navigator прослушиватель событий didfocus

У меня очень странная проблема с react native navigator.

У меня естьScrollableTabView, что имеет несколько навигаторов, на некоторых сценах конкретного навигатора, я хочу, чтобы скрыть нижнюю навигацию.

Я попытался использовать событие onFocus для navigator, чтобы получить текущие детали сцены, оказалось, что он был устаревшим (хотя он прекрасно работает на Xcode и Android-симуляторах, но он не работает, когда я выпускаю приложение.)

Моя вторая попытка состояла в том, чтобы прикрепить прослушиватель событий didfocus на родительский стек componentDidMount, как показано ниже:

this.refs.stackNavigator.navigationContext.addListener('didfocus',(event) => { // Some code here calling an action });

Но и не сработало, так как я где-то нашел, что кто-то говорил, что прикрепление слушателя должно быть перед отрисовкой навигатора, и предложил прикрепить слушателя к renderSceneфункции навигатора. (Кроме того, все прекрасно работает на симуляторах, но не на выпущенных приложениях.)

Моя третья попытка была на самом деле сделать это с помощью renderSceneметода, а также тот же результат, что и выше две попытки, все работает хорошо на тренажерах, но в релизе, ничего не работает. (Кроме того, все прекрасно работает на симуляторах, но не на выпущенных приложениях.)

Любая помощь или если кто-то столкнулся с таким поведением, я бы высоко оценил его обратную связь.

Спасибо сообществу!

1 ответ

  1. Вы используете react-native-scrollable-tab-view? Можно использовать onChangeTab:

    <ScrollableTabView onChangeTab={this.onChangeTab} />
    

    и я уверен, что вы можете настроить этот метод следующим образом:

    onChangeTab({i, ref, from }) {
      this.children[i].onFocus();
    }
    

    Для каждой вкладки необходимо указатьref={(ref) => (this.children[i] = ref)}, где iнаходится индекс вкладки. Теперь вы можете создать метод onFocus() на вкладке, и он должен вызывать его, когда эта вкладка выбрана.