RNN [v2]:如何正确地从堆栈切换到底部选项卡

时间:2018-10-12 10:12:46

标签: react-native wix-react-native-navigation

我正在使用setRoot()从堆栈导航切换到底部标签导航,反之亦然。我注意到的是每次调用setRoot时,都会重新创建我的组件(再次调用构造函数,this.props显示不同的roottag,等等)

现在,当我使用Navigation.events().registerBottomTabSelectedListener(this.tabSelectedListener)聆听底部选项卡中的选项卡选择时,我会收到有关所创建组件的每个实例的事件。我需要听这个才能调用api并获取数据。如果重新创建了3个实例,则api将称为3x。 lodash /下划线去抖动无法过滤该调用,因为它调用了组件/函数的3个不同实例。

问题是,setRoot是否真的是从选项卡切换到堆栈的正确方法?

1 个答案:

答案 0 :(得分:0)

确实是导致此问题的听众。我是这样修复的:

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();
  }
...

reference