0

我正在使用带有 react-native 的 react-navigation 制作应用程序。

我的应用程序的结构是,

Main Tab
  - Tab 1 (Stack)
    - screen A
    - screen B
    - screen C
  - Tab 2 (Stack)
    - screen D
    - screen E
    - screen F

我想要做的是在特定时间重置 Tab 1 (Stack Navigator),而不是导航到 Tab 1。

如果用户位于屏幕 F,我只想重置 Tab 1(堆栈)而不让用户移动到 Tab 1。

所以我认为调度导航动作应该在这些反应组件之外触发,比如resetHelper.js

但是我不知道如何在不导航该堆栈的情况下重置特定堆栈。

任何帮助,将不胜感激。提前致谢!

4

1 回答 1

1

通常,如果您在特定堆栈中,您将通过重置,this.props.navigation.reset()但由于您想从另一个堆栈重置一个堆栈,您需要使用 aNavigationServiceStackNavigator重置需要重置的。

阅读此帮助指南,了解如何创建NavigationService.

完成NavigationService设置后,将其编辑NavigationService.js为:

import { StackActions, NavigationActions } from 'react-navigation';

let _navigator;

function setTopLevelNavigator(navigatorRef) {
  _navigator = navigatorRef;
}

function reset(index = 0, actions) {
  _navigator.dispatch(
    StackActions.reset({
      index,
      actions
    })
  );
}

// add other navigation functions that you need and export them

export default {
  reset,
  setTopLevelNavigator,
};

然后从任何文件中的任何函数执行以下操作:

import {reset} from NavigationService.js
//your other code and functions here.
reset(0, actions)

在此处阅读更多相关信息。

于 2019-08-29T11:46:38.303 回答