React native 在react导航中删除堆栈

React native 在react导航中删除堆栈,react-native,react-navigation,React Native,React Navigation,假设我们有这个屏幕导航案例: 其他以前的屏幕->A->B->C->D 现在我们在屏幕D中,如何直接返回屏幕B并从堆栈中删除屏幕D和C 我使用的是navigation.navigate(B,params),但在屏幕B中单击后退按钮时,我返回到屏幕D。目的是转到A 编辑: 我正在尝试使用重置操作: const resetAction = NavigationActions.reset({ index: 0, actions: [previousNavigationActions, navig

假设我们有这个屏幕导航案例:

其他以前的屏幕->A->B->C->D

现在我们在屏幕D中,如何直接返回屏幕B并从堆栈中删除屏幕D和C

我使用的是navigation.navigate(B,params),但在屏幕B中单击后退按钮时,我返回到屏幕D。目的是转到A

编辑: 我正在尝试使用重置操作:

const resetAction = NavigationActions.reset({
  index: 0,
  actions: [previousNavigationActions, navigateActionToScreenB],
});
this.props.navigation.dispatch(resetAction);
如何从导航状态获取以前的导航操作?

请尝试以下操作:

import { NavigationActions } from 'react-navigation'

const backAction = NavigationActions.back({
    key: 'C'   // if you want to go back to B
})

this.props.navigation.dispatch(backAction)
,您必须使用要导航到的屏幕之后的屏幕,请参阅

您也可以尝试手动创建历史记录,但上面的back方法将是更简单、更干净的解决方案。

在插件V3.9.0中,我使用了以下代码,删除了所有back stack并导航到屏幕

 this.props.navigation.dispatch(
  StackActions.reset({
  index: 0,
  key: null,
  actions: [NavigationActions.navigate({ routeName: '<<YOUR ROUTE NAME>>' })]
  })
  )
this.props.navigation.dispatch(
StackActions.reset({
索引:0,
key:null,
操作:[NavigationActions.navigate({routeName:''}]
})
)

我正在考虑使用重置。知道A前面有屏幕,如何从状态获取操作以便在重置操作中使用它们?我认为您必须使用
router.getStateForAction
,它允许您访问
state.routes
(请参阅和),但我不确定。@ USE357885请考虑接受答案或提供更多关于当前问题的信息。谢谢提示!我设法使用getStateForAction并手动操作要从堆栈中删除的路由和索引