问题标签 [react-navigation-drawer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1037 浏览

react-native - React Navigation DrwaerNavigator 中未显示的图标

我正在尝试将图标添加到以下简单的React Navigation DrawerNavigator

抽屉显示正常,但图标不是。

0 投票
0 回答
696 浏览

react-native - react-navigation - 将参数传递到嵌套导航器中(在抽屉组件中获取参数,但不在主路由中获取它)

我正在导航到一个用参数包裹在 DrawerNavigator 中的 StackNavigator(其默认路由是 MaterialBottomTabNavigator)。我可以在 Drawer 自定义组件中获取参数。但在 StackNavigator 的屏幕中无法获得相同的结果。我尝试通过将默认路由更改为纯屏幕来避免 BottomTabNav,但结果仍然相同。

这是我的仪表板屏幕 - 选项卡导航器

这是我从上述选项卡之一导航到的另一个屏幕

因此,这是一个包含两者的堆栈导航器

我需要一个抽屉来放整件东西,所以把它全部包起来

抽屉在哪里

对于身份验证和其他东西,如飞溅,我正在使用

现在我想做的是这个。

  • 在“Splash”,我检查最后一个用户信息。
    • 如果我得到它,我会验证会话令牌以查看它是否已过期
      • 如果没有过期,我会使用 userinfo 导航到“App”(上面的 AppDrawerNavigator 实例)
    • 如果我没有得到它,或者会话已过期,我会导航到 Auth
      • 身份验证结束后,我使用用户信息导航到“App”(上面的 AppDrawerNavigator 实例)

在任何一种情况下,我都将使用相同的 userinfo 参数来“应用”并且我可以在 Drawer component 中获取 userinfo 参数

但我没有从 AppStack 中的任何其他屏幕获取它。我什至试图通过将Otherscreen 向上移动到第一个位置使其成为默认值来避免中间的BottomTabNav,然后导航到“App”转到Otherscreen,但userinfo 参数仍然不可用。

我想我应该能够从(A)抽屉组件和(B)AppStack屏幕上的this.props.navigation获取userinfo参数,或者至少它是初始屏幕,即仪表板组件

这是一个最小的演示: https ://github.com/bhave-abhay/PassPropsIntoNestedNav/ 另外,这是错误报告 https://github.com/react-navigation/react-navigation/issues/5646

在这种情况下出了什么问题?!

0 投票
1 回答
1456 浏览

react-native - 从抽屉打开时刷新组件(反应导航)

编辑:异步调用现在已放置在axios.all()调用中以加快进程。问题仍然相同。

在我的应用程序中,当在登录屏幕上按注销时,存储在设备上的令牌被删除。

登录.js

现在我想在另一个页面中使用这个事实,我将渲染基于 prop loggedIn。如果已登录,那么true,我将呈现活动以及一个绿色或红色框,指示用户是否已注册该活动。这一切都很简单,并且工作正常:

但是,当用户刚刚注销时,不应显示此信息。在这种情况下,它应该显示一个简单的文本,上面写着“您必须登录才能查看活动”。

为简单起见,省略了registerednotRegisteredonOpenFood和函数的渲染。onOpenActivity对于刷新的功能和 API 调用,我有这段代码(API 调用的功能在单独的文件中,这些是基本的 axios 请求,两者都是GETPOST):

现在的问题是,this.state.registered重新打开页面时看不到更改,导致页面显示不正确。刷新页面有效,因为整个状态都被重置了。如何解决这个问题?有没有办法例如onRefresh在再次加载页面时调用?页面以及函数onOpenFoodonOpenActivity导航到的页面是 StackNavigator 的一部分,StackNavigator 本身也是 DrawerNavigator 的一部分(react-navigation 3.3.2)。

0 投票
1 回答
2590 浏览

react-native - 对 Press Item 操作做出反应本机抽屉导航

在我的抽屉导航器中,当我按下注销时有注销按钮。我想删除app_token,但我不知道如何删除。

我试着把这样的东西:

但它没有用。

});

0 投票
1 回答
1327 浏览

react-native - 登录后带有顶部选项卡的抽屉导航

我一直在尝试构建一个应用程序,它会在启动后进入登录屏幕。用户登录后,应将其定向到具有抽屉导航和选项卡的屏幕。我一直在尝试使用 react native expo 来实现这一点。它在世博会工作得很好。但是,一旦我生成了一个 APK 并尝试使用它,登录后它会重定向到启动和登录,而不显示任何内容。我一直在使用 react-navigation 包在屏幕之间导航

我的 Navigator.js:

我的 MainDrawer.js:

我的 SplashScreen.js:

我的 LoginScreen.js:

有人可以指出问题出在哪里并提出修复建议吗?提前致谢。

0 投票
0 回答
1385 浏览

react-native - 导航越来越慢

当我第一次启动该应用程序时,它快速且响应迅速。但是当我导航时,它变得越来越慢。即使我递归地在主屏幕和第二屏幕之间导航。第一次导航是即时的,但第 10 次已经需要一秒钟,整个应用程序变得越来越慢。我怀疑导航是原因。因为如果我什么都不做。该应用程序刚刚运行,在我开始导航之前它很快。这发生在规模更大的android上。在 iOS 上(至少在模拟器上)这个问题在经过大量导航后才稍微明显。

据我了解,每次我导航到某个地方时,都会在堆栈顶部添加新屏幕。我所有的导航都是这样制作的。props.navigation.navigate('Home'),有时带有道具。所以也许这就是原因。如果是,有没有办法在我每次返回主屏幕时重置堆栈?

这是我的 Navigator.js

我有另一个带有一个登录屏幕的导航器来显示用户是否未登录。但我认为这无关紧要。

这是我的 HomeScreen.js 的内容

仅供参考,设置屏幕,它完全是空的

在这两个屏幕之间来回导航每次都变得越来越慢。

0 投票
2 回答
2043 浏览

javascript - 如何在 React Native 上使用 StackNavigator 与 DrawerNavigator 和 SwitchNavigator?

TL;DR:我需要这个结果(下面列出了 DrawerNavigator 和 StackNavigator 导航):

在此处输入图像描述

结构:


我有这样的屏幕结构:

在根页面(由“•”表示)中,我需要使用DrawerNavigator进行导航,而子页面(由“|_”表示)需要使用StackNavigator进行导航。

这是我想要得到的行为:

抽屉:带 => createDrawerNavigator() 的MainDrawer

切换导航器

组件:StartCheckWelcomeScreen是一个<Component />

StartCheck:这只是检查 AsyncStorage 上是否有数据,例如“isFirstRun”,并根据结果打开WelcomeScreenMainDrawer [like this documentation]

我的代码:


屏幕:

主抽屉:

带有 SwitchNavigator 的应用容器:

有了这段代码,Header就不会出现了,所以我把 DrawerNavigator 放到 StackNavigator 里面:

主栈:

我用 SwitchNavigator 修改了 App Container:

但是通过这种方式,标题与侧边栏重叠,如果我使用headerMode: 'none',我的标题也会从其他屏幕上消失(不仅仅是容器)。

在此处输入图像描述

我需要这个结果(上面有 DrawerNavigator 和 StackNavigator 导航列表):

在此处输入图像描述

而且我也不知道在哪里可以放置辅助屏幕(使用 StackNavigator 的导航方法打开)。

很抱歉这个大帖子,是我试图尽可能详细,因为我一直在寻找解决方案,但我没有找到......

0 投票
2 回答
3130 浏览

react-native - 在反应本机导航中动态更改标题标题

对于学校作业,我们正在使用 React Navigation 和 Redux 创建一个 React Native 应用程序。因为我们所有人都是新手,所以我们有一个无法解决的问题。

我们希望在单击某个按钮时更改标题的标题。我们第一次单击按钮时,它会很好地更改标题标题。当我们按下不同的按钮时,问题就出现了,标题不会改变。请注意,无论我们选择什么选项,我们总是会转到同一个屏幕。

当我们将标题栏放在 DrawerNavigator 中时,我们确实让它工作了,但是因为我们希望 Drawer 来自标题,所以这不是一个选项。我的猜测是,堆栈是用某个标题创建的,并且在使用 DrawerNavigator 切换屏幕时永远不会更新,但我们不知道如何解决这个问题。

提前致谢!

0 投票
1 回答
1061 浏览

react-native - 如何将 React-Navigation Drawer 菜单添加到我的屏幕?

我有一个使用 React-Navigation 3.x 构建的主屏幕。我有一个标题、一些导航图标和一个底部选项卡菜单。它运行良好,但现在我想在屏幕上添加一个抽屉菜单,并在右上角添加一个图标来切换抽屉。

这是我的主屏幕(App.js)的简化版本:

这是 DrawerMenu.js 的代码

我无法让抽屉工作。当我单击主屏幕右上角的“菜单”按钮调用 toggleDrawer() 时,出现“未定义不是对象(评估 'ae.props.navigation')”错误。

抽屉也无法使用手势激活,所以我认为我没有正确添加它。我在这里做错了什么?谢谢!!

0 投票
2 回答
1236 浏览

javascript - 导航关闭抽屉不起作用反应导航

我们正在为我们的 React Native 应用程序使用 React Navigation 并显示侧栏。一切正常,但是,关闭抽屉不起作用。

实际上,当用户点击 Android 设备后退按钮时,我必须关闭抽屉。

所以,我navigation.closeDrawer();在后退按钮处理程序方法中调用。

但是,虽然我们试图通过设备后退按钮侧抽屉不关闭来关闭。 OpenDrawer方法工作正常。

我的侧边栏中有许多屏幕。那么,在每个类中我需要调用这个 closeDrawer 方法还是我们可以调用它的任何一个全局类?如果抽屉打开,我只需要关闭,如果用户点击设备后退按钮,我必须关闭这个抽屉。

有什么建议么?