问题标签 [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 回答
28 浏览

react-native - 使用 react-navigation 切换身份验证流堆栈时如何重置堆栈

我有一个使用 react-navigation v6 的 React Native 项目。这是导航结构:

本质上,有两个堆栈:

  • 身份验证堆栈
    • 登录屏幕,注册屏幕等...
  • 常规堆栈
    • 4 个嵌套堆栈(主堆栈、发现堆栈、日历堆栈、配置文件堆栈)

我正在使用 React Context 从身份验证堆栈切换到常规堆栈(或常规堆栈到身份验证堆栈)

问题是当用户注销并重新登录时,他们的堆栈从未被重置,他们被定向到他们注销的屏幕。例如,用户 A 登录并进入配置文件屏幕,然后按注销。用户 A 现在重新登录,而不是被发送到主屏幕,而是被发送回个人资料屏幕。

我希望在用户注销时重置常规堆栈的导航状态。我试过这样做,但它不起作用(用户仍然被发送到配置文件屏幕):

切换堆栈以进行身份​​验证流时,如何完全重置堆栈?

作为参考,这是常规堆栈中的堆栈之一的样子:

实际行为: 在此处输入图像描述

预期行为: 在此处输入图像描述

0 投票
0 回答
329 浏览

react-native - 为什么我的导航引用没有在 React Navigation 6 和 Redux 中准备好?

在 React Navigation 6 中,我的研究表明,要在没有道具的情况下进行导航,我应该参考并使用createNavigationContainerRef. 我可以将屏幕名称传递给我dispatch,但由于某种原因,当我评估条件时,isReady我总是被告知不是。编码:

应用程序.js:

解决AuthScreen.js:

AuthContext.js(精简):

导航参考.js:

当我记录token来自调度的消息时,我会取回令牌。当我记录屏幕时,我会返回TrackListScreennavigate但每当它被触发时,它总是返回not ready.

文件:

为什么我navigate在我之后不工作dispatch或为什么是isReady假的?

0 投票
1 回答
33 浏览

react-navigation-v6 - 嵌套在 Material Bottom Tab 内的堆栈在您第二次导航时不显示内容(React Navigation v6)

问题:

当我第一次导航到材料底部内的堆栈时,一切正常,之后您更改选项卡并且当您返回内容时不再渲染。

预期行为:

每次选择选项卡时,都必须渲染堆栈。换句话说,每次我导航到选项卡时,我都能在选项卡内看到堆栈的内容。

包裹 版本
@react-导航/本机 6.0.6
@react-navigation/material-bottom-tabs 6.0.9
@react-navigation/native-stack 6.2.5
反应原生安全区域上下文 3.3.2
反应原生屏幕 3.8.0
反应式 0.64.2
世博会 43.0.0
0 投票
1 回答
26 浏览

react-native - React-Navigation 和安装错误和首次使用

我是 react-native 的新手,或者你可以说 React 的新手,我正在研究 react-native 导航我已经按照https://reactnavigation.org/docs/getting-started中的说明安装了所有必需的库,但是当我在运行我的代码时出现错误,因为“在项目或此目录中找不到@react-navigation/native。” 我应该怎么做有什么方法可以开始使用我的代码吗?帮我这是我在模拟器中遇到的错误

0 投票
1 回答
210 浏览

react-native - 如何在屏幕之间导航时防止状态重置?反应原生

在 React Native 应用程序中,我有一个主屏幕和第二个屏幕,用户使用它来添加应在主屏幕上显示的项目。问题是当我在第二个屏幕中添加项目并转到主屏幕时,我可以看到添加的项目,但是当我再次进入第二个屏幕添加其他项目时,它会删除以前添加的项目。

任何帮助解释为什么会发生这种情况以及如何处理它?提前致谢 这是应用程序的代码。

这是主屏幕组件

和第二个屏幕

0 投票
0 回答
47 浏览

reactjs - Context 中的状态应该如何根据屏幕焦点传递到 FlatList 中?

学习ContextProvider我试图弄清楚如何在检测是否处于焦点时在屏幕组件中实现我state的 from 。Context

根据研究,我正确地引入Context了:

在我的上下文文件(精简)中,我Reducer正在工作,我能够得到我的payload

但是当我尝试检索state焦点时true它不起作用时:

我尝试了一种替代方法useState并写道:

这两种方法都不起作用或将带有数据的屏幕组件重新渲染到FlatList. 在我的屏幕组件中,我应该如何Context仅在屏幕为时检索inFocus状态数据true

0 投票
0 回答
120 浏览

react-navigation - 不工作的过渡预设。反应导航版本 6

我最近从 v4 升级到 v6。
结果,TransitionPresets 似乎已经停止工作。

我不认为有任何错误的使用方式。
https://reactnavigation.org/docs/stack-navigator/#transitionpresets

有没有其他人遇到过类似的问题?

编辑 2021-11-17

对不起。
我想我不明白本机堆栈和堆栈之间的区别。
我使用了普通的堆栈并且它有效。

0 投票
0 回答
116 浏览

reactjs - React Navigation V6 在 useFocusEffect 中使用 useCallback 问题 invalid-hook-call

React navigation V6 文档展示了在 useFocusEffect 中使用 useCallback 的示例。但是,当我使用相同的代码时,我遇到了无效的挂钩调用。

链接:https ://reactnavigation.org/docs/use-focus-effect/

例子:

错误:无效的挂钩调用。钩子只能在函数组件的主体内部调用。这可能由于以下原因之一而发生:

您可能会看到它的三个常见原因:

  1. 你可能有不匹配的 React 和 React DOM 版本。
  2. 您可能违反了 Hooks 规则。
  3. 您可能在同一个应用程序中拥有多个 React 副本。

据我了解,钩子只能在函数组件的主体内调用。但是,为什么文档中的上述示例不起作用?

包.json

0 投票
0 回答
14 浏览

reactjs - Web - 通过浏览器后退和前进按钮在两个以上屏幕上来回导航后导航中断

出现以下错误:

我正在使用以下版本的反应导航:

请帮助解决此问题。

0 投票
1 回答
101 浏览

react-native - React Native - 显示本机标题后退图标

有没有办法在自定义标题中显示本机后退图标(对于 android nad iOS 不同)?我已经创建了自定义标题,但不知道如何显示它们。

我正在使用反应导航版本 6

我的堆栈:

我的标题组件:

感谢您的每一个回答