【发布时间】:2020-12-07 23:34:48
【问题描述】:
我正在与一种情况作斗争。所以我有三个堆栈导航器。
-
navigator1 => 屏幕1
-
navigator2 => 屏幕2
-
navigator3 => screen3, screen4, screen5
我从screen1 导航到screen2。然后从screen2 到screen3 然后screen4 然后screen5 然后再次导航到screen2。但是现在当我在screen2 时,onBack 按我不想继续screen5,而是想直接继续screen1。
当我尝试使用以下代码从screen5 导航到screen2 之前从堆栈中弹出screen5、screen4 和screen3。它不起作用,screen3 仍然在堆栈中。
import { StackActions } from '@react-navigation/native';
navigation.dispatch(
StackActions.popToTop()
);
或
import { StackActions } from '@react-navigation/native';
navigation.dispatch(
StackActions.pop(3)
);
如何从导航堆栈中删除navigator3?这样我就不会再从screen2继续screen5 onBackPress
我正在使用 react-navigation 版本 5.x。
【问题讨论】:
-
如果你这样做
navigate('screen2')会发生什么? -
它导航到
screen2。 -
那么,它是否倒回堆栈? (目前在我的手机上,所以无法测试自己。试一试)
-
这就是问题所在。它从
screen2的后背压回到screen5。我希望它在后按时在screen1上导航。 -
覆盖后退按钮的预期行为可能是个坏主意——你只会让你的用户感到困惑。为什么不在应用 UI 中为此实现一个专用按钮(“返回主菜单”等)?
标签: react-native react-redux react-native-android react-navigation react-navigation-v5