使用react-navigation在React Native(IOS)中从多个屏幕导航回来

时间:2019-08-09 06:28:33

标签: react-native react-navigation

假设我有四个屏幕A-> B-> C-> D-> E,我想从E导航回C,为此我使用了不同的路线,例如, firstRoute => A-> B-> C是一条路由, secondRoute => D-> E是另一条路由。 我首先将路由切换为“ firstRoute”,然后使用堆栈“ C” 我这样做是因为, 我想使用IOS后退幻灯片从E转到C,此后,当我再次使用IOS后退幻灯片时,我应该回到B然后是A,而不是回到E本身并进行无限循环。 我无法执行此任务,有人可以帮我编写示例堆栈导航并路由如何区分它们。

2 个答案:

答案 0 :(得分:1)

您可以使用.goBack()的反应导航!

like:

class HomeScreen extends React.Component {
  render() {
    const { goBack } = this.props.navigation;
    return (
      <View>
        <Button onPress={() => goBack()} title="Go back from this HomeScreen" />
        <Button onPress={() => goBack(null)} title="Go back anywhere" />
        <Button
          onPress={() => goBack('key-123')}
          title="Go back from key-123"
        />
      </View>
    );
  }
}

,但是只有在您知道 C 路线的钥匙时,它才有效!

您可以在此处查看更多详细信息! https://reactnavigation.org/docs/en/navigation-prop.html#goback-close-the-active-screen-and-move-back

答案 1 :(得分:0)

只需将switchNavigators与原始stackNavigator结合使用:

  • 将您的A-B-C放入stackNavigator
  • 创建一个包含D和E的D'switchNavigator
  • 将其放入您的主要stackNavigator(将是A-B-C-D'
  • )中

然后

  • 通常从A导航到B到C
  • 从C中,您可以像往常一样使用.navigate(D)
  • 从D开始,您可以像往常一样使用.navigate(E)

但根据switchNavigator中的定义,不允许在屏幕之间自动导航(也包括Android backButton),因此:

  • 从E返回,将切换到C
  • 从D返回,将切换到C
  • 您仍然可以使用.navigate(D)手动从E切换到D

请注意,D和E中的默认标题后退按钮也将退回到C

希望这篇文章很清楚,对您有帮助