导航到另一个导航器时如何返回以前的屏幕

时间:2020-04-08 10:37:24

标签: react-native react-navigation

所以我有以下结构:

public static class MyClass
{
    public struct MyStruct
    {
        public Rectangle MyRectangle {get; set;}
        public Button MyButton {get; set;}

        public void MyVoid()
        {
            MyRectangle = new Rectangle();
            MyRectangle.Width = 300;
            MyRectangle.Height = 100;
            MyGrid.Children.Add(MyRectangle);

            MyButton = new Button();
            MyButton.Widht = 200;
            MyButton.Height = 200;
            MyButton.Click += (a, e) =>
            {
                MyRectangle.Fill = Brushes.Red;
            }
            MyGrid.Children.Add(MyButton);
        }
    }
}

现在,要从“文章”屏幕转到“个人档案”屏幕,我需要先进入Tabs Navigator,然后从那里进入“个人档案”,所以我要执行以下操作:

  <BottomTab.Navigator>
    <BottomTab.Screen name="Feed" component={FeedScreen} />
    <BottomTab.Screen name="Profile" component={ProfileScreen} />
  </BottomTab.Navigator>

  <Stack.Navigator>
    <Stack.Screen name="Tabs" component={BottomTabsNavigator} />
    <Stack.Screen name="Article" component={ArticleScreen} />
  </Stack.Navigator>

一切正常。我现在遇到的唯一问题是,当我从那里按下(配置文件屏幕)时,我希望它可以带我回到文章屏幕,但实际上,它带我进入了Tabs Navigator到Feed屏幕。 知道如何达到预期的结果吗?

我现在正在做的是,我希望在Profile Screen上有一个名为backRoute的路由参数,该参数是可选的,如果已发送,则按回去时会转到该路由,否则会执行goBack()。这听起来不像是一种干净的方法,而且绝对不能扩展

1 个答案:

答案 0 :(得分:0)

您可以尝试在个人资料屏幕中覆盖后退按钮,然后根据调用它的屏幕确定他的行为: 像这样:

<BottomTab.Screen 
     name="Profile" 
     component={ProfileScreen}
     headerRight: () => (
            <Button
              onPress={() => 
                if(lastScreen ==='test1'){
                 //navigate to screen 1
                 }else{
                 //navigate to screen 2  }}
               />)
          ),/>

要确定lastScreen,请使用导航参数:

这是我在v5上使用react-navigation v4的方式 测试了