假设我们有这个屏幕导航案例:
其他先前的屏幕 - > 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);
如何从导航状态获取以前的导航操作?
答案 0 :(得分:1)
尝试以下方法:
import { NavigationActions } from 'react-navigation'
const backAction = NavigationActions.back({
key: 'C' // if you want to go back to B
})
this.props.navigation.dispatch(backAction)
作为key
,您必须在要导航到的屏幕后使用该屏幕,请参阅React Navigation Docs。
您也可以尝试手动reset历史记录,但上面的反向方法将是更简单,更清晰的解决方案。
答案 1 :(得分:0)
从react-navigation插件3.9.0版开始,我使用了以下代码,该代码删除了所有的后退堆栈并导航至屏幕。
this.props.navigation.dispatch(
StackActions.reset({
index: 0,
key: null,
actions: [NavigationActions.navigate({ routeName: '<<YOUR ROUTE NAME>>' })]
})
)