繁体   English   中英

使用带有Exponent js的ex-navigation,如何在用户导航时清除选项卡的StackNavigation?

[英]Using ex-navigation with Exponent js, how do I clear the StackNavigation of a tab when the user navigates away?

我正在使用Exponent和React Native进行导航。 我有一个多选项卡TabNavigation,其中每个选项卡都有自己的StackNavigation元素。 当用户更改TabNavigation中的选项卡时,我想重置上一个选项卡的堆栈。

我已经可以使用popToTop重置StackNavigation元素,但我的问题是确定用户何时更改标签。 是否有我可以订阅的发布的标签更改事件或路线更改事件?

ex-navigation开发人员的帮助下,我找到了一种在导航时清除标签栈的方法。 我们可以将一个onPress处理程序附加到TabNavigation组件,它将被传递给默认的事件处理程序。 在调用默认处理程序以更改选项卡后,我们可以执行任何其他所需的操作。 这是TabNavigation的一个版本,用于在用户单击任何选项卡时清除第一个选项卡的堆栈:

export default class RootNavigation extends React.Component {
  constructor(props) {
    super(props);
    this.onPress = this.onPress.bind(this);
  }

  onPress(switchTab) {
    switchTab();
    requestIdleCallback(() => {
      this.props.navigation.performAction(({stacks}) => {
        stacks("first").popToTop();
      });
    });
  }

  render() {
    return (
      <View>
        <TabNavigation initialTab="first">
          <TabNavigationItem id="first-tab" onPress={this.onPress}>
            <StackNavigation id="first" navigatorUID="first" initialRoute="first-route" />
          </TabNavigationItem>

          <TabNavigationItem id="second-tab" onPress={this.onPress}>
            <StackNavigation id="second" navigatorUID="second" initialRoute="second-route" />
          </TabNavigationItem>

          <TabNavigationItem id="third-tab" onPress={this.onPress}>
            <StackNavigation id="third" navigatorUID="third" initialRoute="third-route" />
          </TabNavigationItem>
        </TabNavigation>
      </View>
    );
  }
};

请注意,我们通过stacks("first")操作的stacks("first")必须同时将idnavigatorUID设置为"first"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM