如何在动态导航TabNavigator中设置初始标签

问题描述 投票:5回答:1

我正在使用react-navigation,并且在TabNavigator内有嵌套的StackNavigator。我在TabNavigator中有三个标签,需要根据某些逻辑为initialRouteName动态设置TabNavigator

我已经尝试将TabNavigator放入具有动态选择的初始标签的React组件中,并在StackNavigator中使用,使道具通过screenPropsTabNavigator。但是这样一来,我无法导航到StackNavigator的任何路线。

有没有办法动态制作initialRouteName

注意:我没有为此应用程序使用redux。

reactjs react-native react-native-android react-navigation react-native-ios
1个回答
0
投票

似乎您真的很亲近。您可以设置导航状态的索引,以指定将其显示为初始路线。

<SomeTabNavigator
  navigation={{
    ...this.props.navigation,
    state: {
      ...this.props.navigation.state,
      index: 1 // or whichever you want
    }
  }}
  screenProps={{
    // whatever the props you wanna pass to child screens.
  }}
/>

但是您还必须通过静态路由才能通过路由器,否则将无法导航。 (或者,如果已有导航,请尝试使用navigate而不是push。)

class Screen extends React.Component{

  static router = SomeTabNavigator.router

...

如果不是这种情况,则应检查导航器的结构,以确保您正确堆叠了堆栈导航器和选项卡导航器。

也许为时已晚,但我希望它能对某人有所帮助。

查看下面的链接以获取更多详细信息。

https://reactnavigation.org/docs/en/custom-navigators.html

© www.soinside.com 2019 - 2024. All rights reserved.