如何忽略嵌套堆栈的 React Navigation 状态持久性?

How to ignore React Navigation state persistence for a nested stack?

我有一个带有 React Navigation 的嵌套选项卡导航,我使用 AsyncStorage 来保持导航的状态。我想要做的是在用户打开嵌套导航堆栈(程序 > ProgramMain/Recipes/Support)时忽略状态的保存。这是我的结构:

-Home
-Programs
---ProgramMain
---Recipes
---Support
-Profile

我试图检查 NavigationContainer 的 onStateChange 传递的 state 变量,但无法弄清楚我怎么知道哪个 screen/stack 被选中。

非常感谢您的帮助。

我认为您的方向是正确的,您可以在 NavigationContainer 的 onStateChange 传递的状态变量的路由 属性 中找到此信息:

每个状态对象都包含一个路由 属性(路由对象列表),它列出了在导航器中呈现的屏幕。

路由对象还可能包含状态:一个可选对象,包含嵌套在该屏幕内的子导航器的导航状态。

https://reactnavigation.org/docs/navigation-state

This page 显示了有关如何从导航器获取活动路线的示例,以便您知道当前哪个屏幕处于活动状态。