如何从React导航中的嵌套堆栈屏幕返回到其他嵌套堆栈屏幕- React Native



我有一个React Native应用程序与React导航。我当前的导航是两个Tab导航器,它们都有一个多屏幕的Stack导航器。

我的标签是这样的:

<Tab.Navigator
initialRouteName="Home"
>
<Tab.Screen
name="Home"
component={HomeView}
/>
<Tab.Screen
name="Message"
component={MessageView}
/>
</Tab.Navigator>

我的堆栈是这样的:

// HOME TAB
<Stack.Navigator>
<Stack.Screen name="Posts" component={HomeView} />
<Stack.Screen name="User" component={UserView} />
</Stack.Navigator>
// MESSAGE TAB
<Stack.Navigator>
<Stack.Screen name="Messages" component={MessageView}/>
<Stack.Screen name="UserProfile" component={UserProfileView} />
<Stack.Screen name="Chat" component={ChatView} />
<Stack.Screen name="GroupChat" component={GroupChatView} />
<Stack.Screen name="Friends" component={FriendsView} />
</Stack.Navigator>

我想要达到的是,我可以去Posts ->UserProfile→聊天→UserProfile→Posts,但是因为Posts堆栈存在于Home选项卡上,而UserProfile和Chat都在Message选项卡上,我似乎无法做到这一点。我可以从帖子到UserProfile,然后到聊天和回到UserProfile。当我按回从UserProfile到Posts, Tab切换到Home-tab应该,但是,如果我切换回Message-tab, UserProfile- stack仍然打开,调用goBack()不关闭它,只是带我回到Home-tab。因此,如果我从home选项卡打开UserProfile-stack,基本上我无法返回Messages-stack。

这个问题只发生在我启动我的应用程序,不打开消息选项卡。如果消息选项卡已经打开,这一切功能都应该。

我做错了什么吗?当我的应用程序启动时,是否可以加载消息选项卡,或者我应该以其他方式去做这件事?

我今天遇到了同样的问题,我想从屏幕A转到屏幕C,然后再回到屏幕A。下面是我的堆栈配置:

  • MainStack: Stack1 &Stack2
  • Stack1: ScreenA
  • Stack2祝辞Stack3: ScreenB, ScreenC

Stack3嵌套在Stack2中。Stack1和Stack2嵌套在MainStack中。

这是我如何从ScreenA导航到ScreenC:

navigation.push('Stack2', {
screen: 'Stack3',
params: {
screen: 'ScreenC',
},
});

当我按后退键时,它会导航到屏幕。

注意,如果您指定了initial:false,您将返回到ScreenB

navigation.navigate('other-stack', {
screen: 'inside-screen',
initial: false, // you can use
params: {},
});

如果初始值设置为false,屏幕将不是堆栈的初始屏幕。在这种情况下,当用户启动应用程序时,他们不会直接看到这个屏幕。相反,他们需要通过另一个屏幕或通过另一个导航操作导航到这个屏幕。

在您提供的代码片段中,由于初始值被设置为false,因此"inside-screen"不会是"other-stack "的初始屏幕。用户将通过应用程序中的另一个屏幕访问此屏幕。

最新更新