禁用特定嵌套屏幕的抽屉

时间:2021-07-18 14:19:27

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

我有一个父抽屉导航器,我想在一个特定的屏幕中禁用抽屉,该屏幕几乎没有导航器。

我尝试将 gestureEnabled 选项放在屏幕上,但它对堆栈屏幕而不是抽屉屏幕有其他影响。

此外,我尝试在抽屉导航器中使用 getFocusedRouteNameFromRoute,但它没有给我屏幕的名称,而是它的父导航器之一。

2 个答案:

答案 0 :(得分:0)

您是否也尝试过禁用滑动?

<Drawer.Screen name="Home" 
   component={HomeScreen}
   options={{
    swipeEnabled:false,
    gestureEnabled:false
  }}
/>

答案 1 :(得分:0)

经过研究,我找到了几种通过使用 dangerouslyGetParent 获取父导航器来实现此目的的方法,我不喜欢这种方法,因为我需要的导航器大约为三层。

我的导航器层次结构看起来像这样 - 抽屉 => 堆栈 => 标签 => 多个堆栈, 我们保存了当前的 Tab,所以我最终做的是根据当前活动的 Tab 在 Drawer 屏幕上动态设置 swipeEnabled 选项。