React native 在react navigation中将参数从屏幕传递到另一个嵌套堆栈

React native 在react navigation中将参数从屏幕传递到另一个嵌套堆栈,react-native,react-navigation,React Native,React Navigation,我在设置导航时遇到了一些困难。这一切都从包含两个选项的抽屉菜单开始,home和clients function MenuDrawerScreen() { return ( <MenuDrawer.Navigator initialRouteName="home" headerMode="screen" drawerType="front"> <MenuDrawer.Scr

我在设置导航时遇到了一些困难。这一切都从包含两个选项的抽屉菜单开始,
home
clients

function MenuDrawerScreen() {

    return (
        <MenuDrawer.Navigator initialRouteName="home" headerMode="screen" drawerType="front">
           <MenuDrawer.Screen name="home" component={HomeScreen} />
           <MenuDrawer.Screen name="clients" component={ClientsScreen} />
        </MenuDrawer.Navigator>
    );
}
在概览页面中按下客户机时,我打开详细信息页面并将客户机作为参数传递:

onPress={() => navigation.navigate('details', {client: client}) }
在Detail屏幕中,我现在可以访问用户:

const { client } = route.params;
<Text> Details of {client.firstName}</Text>
单击客户机时,调用
setClient
,概览屏幕切换到详细信息屏幕。这非常有效,除非我想导航回概览

我添加了一个标题按钮以导航回概览页面。当我单击此按钮时,我会执行
setClient(null)
操作,以便重新打开概览页面。打开的概览是正确的,但不是返回概览(页面从左侧滑入),而是从右侧滑入,这不是我想要的流程。我想回到总览,让它从左边滑进去

如果我坚持使用上下文,我能做到这一点吗?或者我可以简单地使用第一种方法,并找到一种将用户传递到嵌套选项卡堆栈的方法吗?任何帮助都将不胜感激。提前谢谢

const { client } = route.params;
<Text> Details of {client.firstName}</Text>
function ClientsScreen() {
   return (
      <ClientStack.Navigator initialRouteName="Overview" headerMode="screen">
         <ClientStack.Screen name="overview" component={OverviewScreen} />
         <ClientStack.Screen name="details" component={ClientTabsScreen}/>
      </ClientStack.Navigator>
   );
}

function ClientTabsScreen() {
   return (
      <ClientTabs.Navigator initialRouteName="general" headerMode="screen">
         <ClientTabs.Screen name="general" component={GeneralScreen}/>
         <ClientTabs.Screen name="financial" component={FinancialScreen} />
      </ClientTabs.Navigator>
   );
}
function ClientsStackScreen({ navigation }) {

      const [client, setClient] = React.useState(null);
      const clientContext = React.useMemo(() => ({ client, setClient}), [client]);

      return (
         <ClientContext.Provider value={ clientContext }>
            <ClientStack.Navigator initialRouteName="overview" headerMode="screen">
               {client ? ( // If client is selected open the details, otherwise open the overview
                  <ClientStack.Screen name=details component={ClientTabsScreen} />
               ) : (
                  <ClientStack.Screen name="overview" component={OverviewScreen} />
               )}
            </ClientStack.Navigator>
         </ClientContext.Provider>
      );
   }