根据选项卡设置堆栈导航器initialRouteName

时间:2020-07-17 15:21:56

标签: typescript react-native react-navigation

我有一个以下标签浏览器

class MyDTO {
    @CustomConverter(BarConverter::class)
    var myProp: Int? = null
}

(简化的)KClass如下所示:

FooConverter<T>

基本上,我希望根据选择的选项卡使用不同的 annotation class CustomConverter(val converter: KClass<FooConverter<*>>) annotation class CustomConverter(val converter: KClass<FooConverter<Any>>)

要提供更多背景信息,“收藏夹”选项卡允许用户跳过“主页”选项卡上的某些导航步骤,但让用户进行导航时会弹出相同的屏幕。这就是为什么这两个选项卡共享同一堆栈的原因。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

const MainStackScreen = ({route}) => {
  return (
    <Stack.Navigator
      initialRouteName={route.name === 'Favorite' ? 'Leagues' : 'Home'}
      screenOptions={{headerBackTitleVisible: false}}>
      <Stack.Screen name="Favorite" component={FavoriteHomeScreen} />
      <Stack.Screen name="Home" component={HomeScreen} />
      <Stack.Screen name="Organisation" component={OrganisationScreen} />
      <Stack.Screen name="Leagues" component={LeaguesScreen} />
      <Stack.Screen name="Groupes" component={GroupesScreen} />
    </Stack.Navigator>
  );
};

根据当前路由名称(在您的情况下为HomeFavorite),可以动态设置initialRouteName

在上面的示例中,如果您位于Favorite选项卡上,则initialRouteName将是Leagues,否则将是Home


如果您只想跳至Home标签页,而您只想跳至Home标签页,而您只想跳至{ {1}}堆栈,您不需要三元语句,只需执行以下操作:

Favorite