首页 > 解决方案 > 如何在 root 之前导航到屏幕?

问题描述

我正在尝试实现一个取消按钮,它将执行类似navigation.popTopop() 的操作。问题是它会在我期望的屏幕之前导航回一个屏幕,因为该屏幕是整个导航历史的根源。是否可以给它一个索引?

很难设置到特定屏幕,因为屏幕嵌套了选项卡,并且返回几个屏幕会简单得多。

e.g.
navigation.navigate(SCREEN_A);
...
navigation.navigate(SCREEN_B);
...
navigation.navigate(SCREEN_C);
...
navigation.navigate(SCREEN_D);

我试图在没有明确将屏幕设置为 SCREEN_B 的情况下转到 SCREEN_B。谢谢你的帮助!

标签: react-nativereact-navigation

解决方案


您可以指定getId功能来识别屏幕:

https://reactnavigation.org/docs/screen/#getid

<Stack.Screen
  name={SCREEN_B}
  component={ScreenB}
  getId={({ params }) => params.someId}
/>

现在,如果您导航到,它只会在参数相同navigation.navigate(SCREEN_B, { someId: 'someId' })的情况下导航到旧屏幕。someId

或者,如果您总是想要push一个新屏幕,您可以使用push

navigation.push(SCREEN_B)

推荐阅读