Итак, я пытаюсь использовать React Navigation и хочу использовать один и тот же компонент Header на всех своих экранах.
Я использовал expo-cli
для создания проекта.
В моем файле MainTabNavigator.js
у меня есть HomeStack
и SettingsStack
, и они выглядят так:
const config = Platform.select({
web: { headerMode: "screen" },
default: {}
});
const HomeStack = createStackNavigator(
{
Home: HomeScreen
},
config
);
HomeStack.navigationOptions = {
tabBarIcon: ({ focused }) => (
<NavButton
focused={focused}
name={focused ? "star" : "create"}
label={focused ? "Save" : "New"}
/>
)
};
HomeStack.path = "";
В нижней части файла у меня есть tabNavigator
const tabNavigator = createBottomTabNavigator(
{
HomeStack,
SettingsStack
},
{
tabBarOptions: {
inactiveTintColor: "#fff",
labelStyle: {
fontSize: 14
},
showLabel: false,
style: {
backgroundColor: "#fff",
borderTopColor: "#fff",
height: 70,
paddingBottom: 10,
paddingTop: 10
}
}
}
);
tabNavigator.path = "";
export default tabNavigator;
Я попытался добавить компонент <Header />
в navigatorOptions
и defaultNavigationOption
выше tabBarOptions
в функции createBottomTabNavigator
.
Аналогично этому:
...
{
navigationOptions: {
header: <Header />
},
tabBarOptions: {
inactiveTintColor: "#fff",
labelStyle: {
fontSize: 14
},
...
но это просто дает мне пустой заголовок ... не используя мой компонент.
У меня сейчас есть нужные функции, но я должен зайти в каждый Screen
файл и добавить:
HomeScreen.navigationOptions = {
header: <Header />
};
В настоящее время используется "react-navigation": "^3.11.0"
Любая помощь приветствуется!