React native 从组件内重置StackNavigator

React native 从组件内重置StackNavigator,react-native,react-navigation,react-navigation-stack,React Native,React Navigation,React Navigation Stack,广泛问题(针对寻求相同解决方案的个人): 我有一个基于开关的StackNavigator(“MainStack”)应用程序。我想将MainStack重置为{index:1,routes:[{name:'Home',name:'NestedStack'}]},我想从MainStack组件中调用它(见下文) 函数应用程序(){ 返回( { 安侬? } ); } const-MainStack=createStackNavigator(); 函数MainStackScreen({导航,路由}){ **

广泛问题(针对寻求相同解决方案的个人):

我有一个基于开关的StackNavigator(“MainStack”)应用程序。我想将MainStack重置为{index:1,routes:[{name:'Home',name:'NestedStack'}]},我想从MainStack组件中调用它(见下文)

函数应用程序(){
返回(
{
安侬?
}
);
}
const-MainStack=createStackNavigator();
函数MainStackScreen({导航,路由}){
***这里发生了一件事***
***我想用navigation.reset()来响应这个事件***
返回(
);
}
我尝试了几种不同的组合导航.dispatch({…CommonActions.reset({}),target}),从不存在的屏幕到screens.options的问题,产生了不同的错误

我也非常感谢关于如何为NestedStack指定从哪个屏幕开始的建议。。。这是否只是{name:'NestedStack',screen:'NestedScreen'}

特定用例: 我真正想要实现的是链接。我让用户在应用程序关闭时打开链接(我通过Linking.getInitialURL访问),并从应用程序内的摄像头屏幕打开链接(我通过Linking.addEventListener收听)。我已经将这两个组件放置在MainStack组件中,以便在应用程序从身份验证流切换以及在应用程序内扫描二维码时拦截链接

我必须侦听MainStackScreen路由中的更改,然后在路由完全装入后将变量isNavigatorMounted设置为true,然后触发对Linking.getInitialURL的检查

请回答一般StackOverflow用户的广泛问题,但如果这是一种非常低效的方法,请让我知道。

提供了此答案

你不需要共同行动或任何东西。只需将以下内容应用于StackNavigator的导航对象:

navigation.reset({
    routes: [{ name: 'Home' }, { name: 'NestedStack' }],
});
navigation.reset({
    routes: [{ name: 'Home' }, { name: 'NestedStack' }],
});