顶级堆栈导航器看不到孙子堆栈导航器的屏幕选项(反应导航5)

时间:2020-09-23 00:43:26

标签: react-navigation react-navigation-stack react-navigation-v5 react-navigation-bottom-tab

我的应用程序的设置几乎与文档中的以下代码段相同:https://reactnavigation.org/docs/screen-options-resolution/#setting-parent-screen-options-based-on-child-navigators-state

const FeedStack = createStackNavigator();

function FeedStackScreen() {
  return (
    <FeedStack.Navigator>
      <FeedStack.Screen name="Feed" component={FeedScreen} />
      {/* other screens */}
    </FeedStack.Navigator>
  );
}

const ProfileStack = createStackNavigator();

function ProfileStackScreen() {
  return (
    <ProfileStack.Navigator>
      <ProfileStack.Screen name="Profile" component={ProfileScreen} />
      {/* other screens */}
    </ProfileStack.Navigator>
  );
}

const Tab = createBottomTabNavigator();

function HomeTabs() {
  return (
    <Tab.Navigator>
      <Tab.Screen name="Feed" component={FeedStackScreen} />
      <Tab.Screen name="Profile" component={ProfileStackScreen} />
    </Tab.Navigator>
  );
}

const RootStack = createStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <RootStack.Navigator>
        <RootStack.Screen name="Home" component={HomeTabs} />
        <RootStack.Screen name="Settings" component={SettingsScreen} />
      </RootStack.Navigator>
    </NavigationContainer>
  );
}

不同之处在于我的FeedStackScreenProfileStackScreen版本中有大约4或5个屏幕,每个屏幕都有自己的options属性,用于设置headerLeft的值,headerRight和/或headerTitle

文档说,父级导航器只能在其直接子级中看到设置。因此,RootStack可以读取HomeTabs的屏幕选项,而不能读取FeedStackScreenProfileStackScreen的屏幕选项。

我尝试在我的HomeTabs版本上使用此代码,

React.useLayoutEffect(() => {
    navigation.setOptions({ headerTitle: getHeaderTitle(route) });
  }, [navigation, route])

但是route道具只给我起了Tab.Screen的名字...而且至少我需要该标签内的Stack.Screen的名字。

关于如何获得headerLeft可以识别的headerRight中设置的headerTitleFeedStackScreenRootStack选项的任何建议?

  • 弹出的博览会应用
  • 反应导航5
  • xcode 12
  • “ react-native”:“ https://github.com/expo/react-native/archive/sdk-36.0.1.tar.gz”

0 个答案:

没有答案