【发布时间】:2019-07-02 02:54:26
【问题描述】:
所以,我正在尝试使用 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;
我尝试在createBottomTabNavigator 函数中的tabBarOptions 上方的navigatorOptions 和defaultNavigationOption 中添加一个<Header /> 组件。
与此类似:
...
{
navigationOptions: {
header: <Header />
},
tabBarOptions: {
inactiveTintColor: "#fff",
labelStyle: {
fontSize: 14
},
...
但这只是给了我一个空白标题...没有使用我的组件。
我目前有我想要的功能,但我必须进入每个Screen 文件并添加:
HomeScreen.navigationOptions = {
header: <Header />
};
目前使用"react-navigation": "^3.11.0"
感谢任何帮助!
【问题讨论】:
标签: react-native react-native-navigation