【问题标题】:How to ignore React Navigation state persistence for a nested stack?如何忽略嵌套堆栈的 React Navigation 状态持久性?
【发布时间】:2021-11-03 15:36:16
【问题描述】:

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

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

我试图检查 NavigationContainer 的 onStateChange 传递的 state 变量,但不知道如何知道选择了哪个屏幕/堆栈。

非常感谢您的帮助。

【问题讨论】:

标签: reactjs react-native react-navigation


【解决方案1】:

我认为你在正确的道路上,你可以在 NavigationContainer 的 onStateChange 传递的 state 变量的 route 属性中找到此信息:

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

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

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

This page 展示了如何从导航器获取活动路线的示例,以便您了解当前处于活动状态的屏幕。

【讨论】:

  • 谢谢,routes 属性包含嵌套路由数组(全部),因此很难确定“当前”路由何时成为焦点。 (或者我还没有找到方法)
  • 你见过this page of the docs吗?它有一个关于如何从导航器获取活动路线的示例,以便您知道当前哪个屏幕处于活动状态。
  • 我还没有看到这个,我通过获取路线列表解决了这个问题,但似乎这个文档提供了更好的实践。非常感谢!
  • 酷,很高兴我能帮上忙。我已将示例的 URL 添加到我的答案中。
猜你喜欢
  • 2020-11-07
  • 2019-07-12
  • 2019-06-19
  • 2021-05-19
  • 2023-03-22
  • 2021-12-23
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多