如何在React-Navigation/Drawer 6中实现“返回”

问题描述 投票:0回答:2

我在 React-navigation/drawer 6 中实现

goBack
函数时遇到问题(“@react-navigation/drawer”:“^6.1.4”,准确地说)。

我能够使用以下代码在react-navigation/drawer 5中完美实现它:

<Drawer.Navigator>
    <Drawer.Screen 
        ....
        options={{
          header: ({ scene }) => {
            const { options } = scene.descriptor;
            const title = options.headerTitle;
              return (
                <MyHeader 
                  title={title}
                  iconName={"menu"} 
                  goback={() => scene.descriptor.navigation.goBack()}
                />
              );
          },
        }}
      />
</Drawer.Navigator>

react-navigation/drawer 6 的相同修改代码(如下所示)将带我回到初始屏幕(而不是上一个屏幕)。它还会给出警告和错误消息。

<Drawer.Navigator>
    <Drawer.Screen 
        ....
        options={{
          header: ({ navigation, route, options }) => {
              const title = getHeaderTitle(options, route.name);
              return (
                <MyHeader 
                  title={title}
                  iconName={"menu"} 
                  goback={() => navigation.goBack()}
                />
              );
          },
        }}
      />
</Drawer.Navigator>

请问,我怎样才能在react-navigation/drawer 6 中实现这个“返回”?

react-native navigation react-navigation navigation-drawer react-native-navigation
2个回答
10
投票

您需要指定

backBehavior

<Drawer.Navigator backBehavior="history">

升级时请阅读升级指南,其中记录了这些更改:https://reactnavigation.org/docs/upgrading-from-5.x/#the-default-value-for-backbehavior-is-now-firstroute-for -标签和抽屉


0
投票

我遇到了同样的问题,并尝试按照@satya164提供的方式修复它,但后来我意识到我只是有错误的导航结构。

如果您想从屏幕 B 返回到屏幕 A,它们可能应该嵌套在一个堆栈中而不是抽屉中。

就我而言,至少这是一个更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.