在嵌套导航器上反应导航重置

时间:2020-07-16 03:03:34

标签: react-native react-navigation react-navigation-stack react-navigation-v5

我正在使用React-Navigation v 5.0.1,我在Stack导航器中嵌套了一个Drawer导航器,如下所示:

MainStack.js

function MainStack() {
 return(
    <Stack.Navigator>
          <Stack.Screen name="Splash" component={Splash} />
          <Stack.Screen name="Login" component={Login} />
          <Stack.Screen name="HomeDrawerStack" component={HomeDrawerStack} />
    </Stack.Navigator>
 )
}

HomeDrawerStack.js

function HomeDrawerStack() {
 return (
    <Drawer.Navigator>
       <Drawer.Screen name="Home" component={Home} />
    </Drawer.Navigator>
 )
}

当我点击主页屏幕上的注销按钮时,如何导航到登录屏幕并重置/清除所有其他屏幕? (因此它会在其他屏幕上触发componentWillUnmount)

2 个答案:

答案 0 :(得分:0)

清除堆栈后,此代码将导航到“登录屏幕”。因此后退按钮或后退滑动将无法导航到HomeDrawerStack

navigation.reset({
    index: 0,
    routes: [{ name: "Login" }],
});

答案 1 :(得分:0)

如果我分享我的处理方式,就像,我在这里以png形式分享我的代码段,那么我所做的就是将Navigator附加到redux上,并且我用来更改堆栈或通过调度事件替换堆栈存储到导航器的附件。

enter image description here