React native 在react导航中将标题放在抽屉上时出现问题
我正在尝试在react导航中获取抽屉导航器的标题。我在StackNavigator中有一个DrawerNavigator,抽屉中的所有页面都有类似的标题(标题除外)React native 在react导航中将标题放在抽屉上时出现问题,react-native,navigation-drawer,react-navigation,React Native,Navigation Drawer,React Navigation,我正在尝试在react导航中获取抽屉导航器的标题。我在StackNavigator中有一个DrawerNavigator,抽屉中的所有页面都有类似的标题(标题除外) 家庭路由器是抽屉 const HomeRouter = createDrawerNavigator( { Agenda: { screen: Agenda }, Nieuws: { screen: Nieuws }, .... }, { contentComponent: SideBar,
家庭路由器
是抽屉
const HomeRouter = createDrawerNavigator(
{
Agenda: { screen: Agenda },
Nieuws: { screen: Nieuws },
....
},
{
contentComponent: SideBar,
drawerWidth: 300,
}
);
现在,在抽屉中的每个屏幕上都有一个标准的标题,但这不是我想要的标题。我想定制它,这很难。
我尝试了两种方法:
withHeader
函数包装,但在react navigation版本2中不起作用。它给出了一个错误const HomeNavigator = createStackNavigator(
{
HomeScreen: { screen: HomeScreen },
HomeRouter: { screen: HomeRouter,
navigationOptions: () => ({
header: null
})
}
},
{
initialRoute: 'HomeScreen',
});
然后在家庭路由器中
:
const wrap = (name, screen) => {
return(
createStackNavigator({
[name]: { screen: screen }
})
);
};
const HomeRouter = createDrawerNavigator(
{
Agenda: { screen: wrap('Agenda', Agenda)},
...
屏幕定义自己的标题:
class Agenda extends Component {
static navigationOptions = () => ({
header: (
<MenuHeader title="Agenda" />
)
});
render() { .....
此解决方案有效。但仍使用样板代码。因此,我希望包装函数设置属性navigationOptions
。但是,我得到一个错误:
此代码失败:
import Agenda from '../Pages/Agenda';
Agenda.navigationOptions = () => ({
header: (
<MenuHeader title="Agenda" />
)
});
从“../Pages/Agenda”导入议程;
议程.导航选项=()=>({
标题:(
)
});
这会出现错误“不变冲突。元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。”
第二个问题:为什么它在导出之前应用时有效,而在导入之后无效?导入的组件与导出的组件不一样吗?我也尝试了命名的导出/导入,但没有什么区别。
class Agenda extends Component {
static navigationOptions = () => ({
header: (
<MenuHeader title="Agenda" />
)
});
render() { ...
}
Agenda.navigationOptions = () => ({
header: (
<MenuHeader title="Agenda" />
)
});
export default Agenda;
import Agenda from '../Pages/Agenda';
Agenda.navigationOptions = () => ({
header: (
<MenuHeader title="Agenda" />
)
});