问题标签 [react-navigation-v6]

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 投票
0 回答
99 浏览

react-native - React Navigation 类型检查无法识别从对象访问的字符串

我是 Typescript 的新手,这是我第一次尝试将类型分配给navigation.

我有一个文件,我navigationStrings喜欢这样保存:

类型.jsx

当我尝试以编程方式导航时,如果我不使用类型检查,我可以使用上述字符串(如navigationStrings.GameMultiWithTimer)。

但是通过类型检查,我必须使用实际的字符串(如:)'GameMultiWithTimer'

否则我会收到此错误:

同样在 Routes.tsx 中,如果我使用RootStackParamList,则可以访问Home,但navigationStrings.Home会出现上述错误。

编辑:我不得不提一下,当我打开引号时,navigation.navigate('')我会自动得到一个包含所有屏幕的元组。所以navigationStrigs不是真的需要!

这当然是因为正如文档中提到的那样:

这(即RootStackParamListin const RootStack = createStackNavigator<RootStackParamList>();)将为 Navigator 和 Screen 组件的 props 提供类型检查和智能感知。

谢谢!

0 投票
0 回答
50 浏览

react-native - 底部选项卡导航使屏幕透明,因此它显示最后一个屏幕 React Native

  • 反应原生
  • 带有React Navigation v6的底部标签栏

目标:当用户打开另一个标签时,底部标签栏导航,最后一个屏幕应该显示在背景中,我的组件应该覆盖。

我应该使用共享元素转换吗?(我没有这方面的经验……)

我的情况没有“好”的解决方案:

我的想法是在我离开屏幕并将其用作背景图像时创建一个屏幕截图。然而,这很慢(50-100 毫秒延迟,可能会惹恼用户),因为它只是在离开后触发(navigation.addListener('blur', ()=>myFunc()))我不想经常触发快照

我真的希望你能理解我的问题

0 投票
2 回答
188 浏览

react-native - 为什么 tabBarIcon 不能导航到我的 Tab.Screen 中的组件?

在构建自定义时Tab.Screen,我尝试传递自定义tabBarIcon。当图标呈现时,它不会导航到组件TestScreen。在我理解的文档中,应该写成:tabBarIconTab.Screen

当我省略options

单击时onClick呈现组件。当我阅读有关屏幕选项的文档时,它提到screenOptions应该在导航器或组上传递。我试着看看能不能找到类似的问答:

但我无法看到我的错误在哪里。

我当前的依赖项:

如何让我的自定义图标呈现并导航到正确的组件?

0 投票
1 回答
158 浏览

react-native - IOS 向后滑动手势不执行 navigation.goBack()

我有一个带有许多子导航器的抽屉导航器。在 Android 上,标题返回箭头和导航栏返回按钮都可以工作并返回到之前的屏幕。例如,如果我通过抽屉导航到 bScreen1,两个按钮都会让我回到应用程序的主屏幕,即 aScreen1

在 IOS 上,标题返回箭头工作正常,但是,向后滑动让我回到 AuthNavigator 内的登录屏幕,而不是 aScreen1,它对我来说是 0 感,因为它在抽屉导航器之外,并且在 RootNavigator 内的同一级别。向后滑动不会执行 navigation.goBack()。

我已经尝试通过在“beforeRemove”事件上添加一个侦听器然后调用 navigation.goBack() 来覆盖滑动行为,但是在移动到正确的屏幕之前仍然会显示错误的屏幕(前一个)

ps:我用的都是最新版的导航包

0 投票
1 回答
439 浏览

javascript - 带有嵌套导航器的 React Navigation 6.x 中不显示后退按钮

我的 React Native 应用程序有一个根 Stack Navigator,其中包含一些屏幕和嵌套导航器:

我想要实现的是选项卡导航器显示属于 4 个堆栈导航器的 4 个屏幕,并且当导航到这些堆栈导航器的不同屏幕时,隐藏选项卡栏。

因此,我将 Tab Navigator 声明如下:

使用PersonalArea作为初始屏幕的组件PersonalAreaStackNavigator,在根堆栈导航器内:

所以,通过这种方式,我的结构如下:

遵循 React Navigation指南,我能够在隐藏选项卡栏的屏幕之间导航,但我的问题是从选项卡导航器的屏幕之一导航到堆栈导航器屏幕时不显示后退按钮。例如,路径TabNavigator -> PersonalArea -> PersonalData不会在 PersonalData 屏幕中显示后退按钮,但TabNavigator -> PersonalArea -> PersonalData -> Screen E会显示(指向 PersonalData 屏幕)。

这仅在 iOS 上发生。

如何使后退按钮也出现在堆栈导航器的第一个屏幕中,以指向标签栏中也包含的第一页?

0 投票
0 回答
81 浏览

react-native - 如何在屏幕之间重新启动 react-native-reanimated 动画切换?

我是初学者。我正在使用react-native-reanimated动画库。当我切换回主屏幕时,我想重新开始我的动画。如下图所示。例如。当我导航到帐户屏幕然后返回导航到主屏幕时,动画会重新启动。

图片:截图

主屏幕

代码

查看卡

组件代码:

0 投票
0 回答
41 浏览

react-native - React Navigation Drawer 类型为 'back' 添加阴影?

使用react navigation drawer 的时候,drawerType=back感觉是因为主要内容在'front',出来的时候应该会在drawer上投下阴影,但是没有这个选项,我想不通一种方法。海拔对于应用任何可定制的东西都是无用的,react-native-shadow-2包装的行为奇怪且不可预测。

这是我所拥有的: 在此处输入图像描述

和我想要的:

在此处输入图像描述

有什么办法可以做到这一点?

0 投票
0 回答
54 浏览

react-native - 如何将底部标签导航与底部对齐?

我目前正在制作自定义底部选项卡导航器,因为我遇到了反应原生安全上下文的问题,其中手机上的黑条位于底部选项卡上的文本之上。

在此处输入图像描述

我想把它放在底部。

我也有基本的底部标签导航,但在某些手机底部有以下黑条的设备上存在一个问题。我试图申请react-native-safe-area-context,但它似乎没有工作或帮助。

在此处输入图像描述

我能做的最简单的事情是什么来解决这个问题?

这是我的基本底部标签导航:

这是我的自定义标签导航:

0 投票
1 回答
67 浏览

react-native - 如何根据 Tab Navigator 更改 Drawer Navigator 的 headerStyle

我解决了在不同文件中分离导航组件的特定问题,这样组件就不再重新呈现

首先:我正在使用 React Native。我有一个 TabNavigator 嵌套到 DrawerNavigator

我正在尝试根据特定屏幕将抽屉标题的颜色更改为 Material Top Tab Navigator。

我尝试使用具有布尔状态的 TabNavigator 的 screenListeners 来执行此操作,但是当我创建 setState 时,TabNavigator 被重新渲染并再次跳转到主屏幕。

PD:应用程序有一个来自抽屉的顶部标题和来自 tabNavigator 的底部选项卡。我需要当 X 屏幕成为焦点时它们都改变颜色。要为底部选项卡执行此操作,我使用了 route.name 但我无法从父导航器访问此属性。

0 投票
3 回答
197 浏览

react-native - 从子堆栈导航到父堆栈中的组件屏幕

我正在尝试从我的 topTab 导航导航到 Stack Navigation 上的屏幕,但找不到解决方法。我尝试使用 navigation.getParent() 但它抛出了这个错误TypeError: undefined is not an object (evaluating 'navigation.getParent().navigate')

这是我正确解释的代码:

我正在尝试从 tabNavigator 屏幕访问播放器组件。我该怎么办?