React native 在react导航中删除堆栈
假设我们有这个屏幕导航案例: 其他以前的屏幕->A->B->C->D 现在我们在屏幕D中,如何直接返回屏幕B并从堆栈中删除屏幕D和C 我使用的是navigation.navigate(B,params),但在屏幕B中单击后退按钮时,我返回到屏幕D。目的是转到A 编辑: 我正在尝试使用重置操作: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
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并手动操作要从堆栈中删除的路由和索引