RNN [v2]: как правильно переключаться со стека на нижние вкладки - PullRequest
0 голосов
/ 12 октября 2018

Я использую setRoot() для переключения со стековой навигации на нижнюю вкладку и наоборот.Я заметил, что каждый раз, когда я вызываю setRoot, мои компоненты воссоздаются (конструктор вызывается снова, this.props показывает другой корневой тег и т. д.)

Теперь, когда я слушаю выбор вкладок в моих нижних вкладках, используяNavigation.events().registerBottomTabSelectedListener(this.tabSelectedListener), я получаю события для каждого экземпляра созданного компонента.Мне нужно было бы послушать это, чтобы вызвать API и получить данные.если 3 экземпляра были воссозданы, API будет называться 3x.Дебад lodash / underscore не может отфильтровать вызов, потому что он вызывает 3 разных экземпляра компонента / функции.

Вопрос в том, действительно ли setRoot является правильным способом переключения с табуляции на стек?

1 Ответ

0 голосов
/ 13 декабря 2018

Это был действительно слушатель, который вызвал эту проблему.Я исправил это так:

let listener;

export default class YourComponent extends Component {

  constructor(props) {
    super(props);
    listener = Navigation.events().registerBottomTabSelectedListener(({ selectedTabIndex, unselectedTabIndex }) => {this.bottomTabSelected(selectedTabIndex, unselectedTabIndex)});
  }

  componentWillUnmount() {
    listener.remove();
  }
...

ссылка

...