首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Exponent进行前导航时,当用户导航离开时,如何清除选项卡的StackNavigation?

使用Exponent进行前导航时,当用户导航离开时,如何清除选项卡的StackNavigation?
EN

Stack Overflow用户
提问于 2016-12-07 01:53:02
回答 1查看 526关注 0票数 3

我正在使用Exponent和Exponent的前导航,并对本地用户做出反应。我有一个多选项卡TabNavigation,其中每个选项卡都有自己的StackNavigation元素。当用户更改TabNavigation中的选项卡时,我希望重置前一个选项卡的堆栈。

我已经可以使用StackNavigation重新设置popToTop元素,但我的问题是确定用户何时更改选项卡。是否有我可以订阅的已发出的选项卡更改事件或路由更改事件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-07 17:21:25

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

代码语言:javascript
复制
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")操作的堆栈必须同时将idnavigatorUID设置为"first"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41008125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档