我使用react-navigation:^1.0.0-beta.9
是否有办法返回特定屏幕(不是前一个屏幕)?我还将react-navigation
与redux
进行了整合。我查看了文档并看到back
接受了key
param,但这对我来说并不清楚,并尝试将其放在屏幕名称中,如back({ key: 'Screen B' })
但它没有&# 39;工作可能是因为它期望key
是随机生成的,除非特别指明。
例如,我有StackNavigator
Screen A
- Screen B
- Screen C
- Screen D (Current)
让我们说我目前正在Screen D
,我想回到Screen B
我将如何实现它?
我不想使用navigation.navigate('Screen B')
,因为它会在堆栈中添加另一个屏幕,而不是我期待的。
答案 0 :(得分:14)
1.Inside screen D
发送一些行动:
const {navigation} = this.props;
navigation.dispatch({
routeName: 'B',
type: 'GoToRoute',
});
2.在MyStackNavigator.js中处理此操作
const MyStackNavigator = new StackNavigator(//...);
const defaultGetStateForAction = MyStackNavigator.router.getStateForAction;
MyStackNavigator.router.getStateForAction = (action, state) => {
if (state && action.type === 'GoToRoute') {
let index = state.routes.findIndex((item) => {
return item.routeName === action.routeName
});
const routes = state.routes.slice(0, index+1);
return {
routes,
index
};
}
return defaultGetStateForAction(action, state);
};
然后您可以直接从screen D
转到screen B