react-native - 从另一个堆栈重置 React Stack Navigator

标签 react-native react-native-navigation

我在另一个 Stack Navigator 中重置 Stack Navigator 时遇到问题,情况如下:

  1. 用户登陆图书列表屏幕
  2. 用户导航到图书详情屏幕
  3. 用户通过底部导航/标签切换到设置屏幕
  4. 用户切换账户

当用户切换帐户时,我需要清除图书导航堆栈,以便通过底部选项卡导航返回图书堆栈时不会显示不再属于事件帐户的屏幕/图书详细信息。

我怀疑这可以使用 target 属性来实现,我只是不确定要输入什么。文档说它是导航器的键,其中包含路线 ( https://reactnavigation.org/docs/navigation-actions/#goback )。

this.props.navigation.dispatch({
  target: ???,               <-- how can I point this to the Books stack?
  ...CommonActions.reset({
     index: 1,
     routes: [
       { name: 'book-list' }
     ]
   })
});

但是,输入 target: 'books',这是 Books 选项卡导航器的键,会产生以下错误:

The action 'RESET' with payload '{"index":1,"routes":[{"name":"book-list"}]}' was not handled by any navigator. If you are trying to navigate to a screen, check if the screen exists in your navigator.

这是导航结构:

NavigationContainer
--Tab.Navigator
----Tab.Screen (Books)
------Stack.Navigator
--------Stack.Screen (Book List)
--------Stack.Screen (Book Detail)
----Tab.Screen (Settings)
------Stack.Navigator
--------Stack.Screen (Settings Page)

理想情况下,我希望在用户切换帐户并且不导航到图书后重置图书导航器堆栈。

最佳答案

我们遇到了类似的问题。 在 v5 中试试这个:每当您需要导航到 Books 堆栈时,您都可以像这样直接导航到嵌套导航器。

this.props.navigation.navigate('Books', {screen: 'BookList'})

如果您使用“books”和“book-list”作为名称,请使用它们代替“Books”和“BookList”。 这将确保它不会在旧数据仍然可见的情况下跳回到具有先前 BookDetail 屏幕的 Books 堆栈。

关于react-native - 从另一个堆栈重置 React Stack Navigator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60481685/

相关文章:

react-native-navigation - 有没有办法禁用顶部栏中的右键?

react-native - 如何在用户上次访问的屏幕上保持 native 的 View ?

React-native-navigation 标签栏中心圆圈图标

android - react-native run-android 失败并出现错误

javascript - View 中的 React-360 相机位置

reactjs - 如何在React-data-table中设置paginationRowsPerPageOptions ['ALL' ,'50' ,'' 100']

javascript - undefined 不是一个对象(评估 _this2.props.navigation.navigate)

javascript - 双标题和双安装主屏幕 - react 导航

reactjs - 获取断点以使用 jest、Visual Studio 代码和自定义 typescript 转换器

ios - react native 导航与 react native Sentry ios