将本机设置 defaultNavigationOptions 一次反应到多个堆栈导航

react native set defaultNavigationOptions to multiple stacknavigations at once

我有一个表格布局,其中每个选项卡都是一个堆栈导航器。每个 stacknavigator 都需要有相同的 defaultStackNavigationOptions。

有没有办法将默认选项设置为一组导航器(即 (HomeStack, SubjectStack, ...).defaultNavigationOptions)?

编辑: 快速编辑以进行澄清。我当前的代码是这样的:

const homeStack = createStackNavigator({
  Home: HomeScreen,
  Details: DetailsPage,
},
{
  defaultNavigationOptions: {
    headerStyle: { backgroundColor: constants.color.primary },
    headerTitleStyle: { color: "white" },
  }
});
const subjectStack = createStackNavigator({
  Subject: SubjectScreen,
  News: NewsPage,
},
{
  defaultNavigationOptions: {
    headerStyle: { backgroundColor: constants.color.primary },
    headerTitleStyle: { color: "white" },
  }
});
//...

这些已加载到 tablayout 中:

export const HomeTabNavigator = createBottomTabNavigator(
  {
    Home: {
        screen: homeStack,
    },
    Subject: { 
        screen: subjectStack,
    },
    //...
  }
);

我希望一次在每个 StackNavigator 上设置 defaultStackNavigation,而不必每次都复制粘贴或调用一个函数。

如果我在 tablayout 上的 HomeStack 上导航,我不希望它影响主题选项卡上 Subjectstack 的当前堆栈。

你可以这样做。

 const stackNavigator = createStackNavigator(
      {
        Home: { screen: HomeTab },
        Horse: { screen: HorseTab }
      },
      {
        defaultNavigationOptions: {
          headerStyle: {
            backgroundColor: "yellow"
          }
        },
        cardStyle: {
          backgroundColor: "blue"
        }
      }
    );

如需进一步阅读,您可以参考here

在您的代码中,您可以像这样更新,

const stack = createStackNavigator({
  Home: HomeScreen,
  Subject: SubjectScreen
},
{
  defaultNavigationOptions: {
    headerStyle: { backgroundColor: constants.color.primary },
    headerTitleStyle: { color: "white" },
  }
});

const HomeTabNavigator = createBottomTabNavigator(
  {
    Home: {
        screen: homeStack,
    },
    Subject: { 
        screen: subjectStack,
    },
    //...
  }
);


HomeTabNavigator.navigationOptions = ({ navigation }) => ({
  headerTitle: (
    <Text style={{}}>
      Result
    </Text>
  ),
  headerStyle: {
    backgroundColor: "white"
  }
});


export { HomeTabNavigator }

我暂时找到了解决方案。我只是创建了一个对象

const defaultNavigationOptions = {
    headerStyle: { backgroundColor: constants.color.primary },
    headerTitleStyle: { color: "white" },
}

并加载它而不是常规导航选项,我可以在其中使用

扩展默认导航选项
{
    defaultNavigationOptions: {
    ...defaultNavigationOptions,
    headerStyle: { backgroundColor: constants.color.secondary },
}