我正在使用带有react-native的react-navigation制作应用程序。
我的应用程序的结构是
Main Tab
- Tab 1 (Stack)
- screen A
- screen B
- screen C
- Tab 2 (Stack)
- screen D
- screen E
- screen F
我想做的是在特定时间重置选项卡1(Stack Navigator),而不导航到选项卡1。
如果用户位于屏幕F中,我只想重置选项卡1(堆栈)而不让用户移动到选项卡1。
因此,我认为调度导航操作应在这些反应组件之外触发,例如resetHelper.js
但是我不知道如何在不浏览特定堆栈的情况下重置特定堆栈。
任何帮助将不胜感激。预先感谢!
答案 0 :(得分:1)
通常,如果您位于特定的堆栈中,则可以通过this.props.navigation.reset()
进行重置,但是由于要从另一个堆栈中重置一个堆栈,因此需要为{{1}使用NavigationService
},需要重置。
阅读this help guide,了解如何创建StackNavigator
。
设置为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,
};
了解更多about it here。