抽屉导航器位于stackNavigator中。
我将标题设置为无,并且我想在按下按钮时使标题部分起作用。
我写了以下代码。
this.props.navigation.dispatch(DrawerActions.toggleDrawer());
没有错误发生。 但是它什么也没做。
导航器代码如下:
navigator.js
const MainScene = createStackNavigator({
MainTab: {screen: MainTab},
OtherScene: {screen: OtherScene}
},{...})
const OtherScene: createStackNavigator({
DrawerScene: {screen: DrawerScene}
},{...})
const DrawerScene = createDrawerNavigator({
Page1: {screen: Page1},
Page2: {screen: Page2},
},{...})
Header.js
_sideMenu() {
this.props.navigation.dispatch(DrawerActions.toggleDrawer());
}
render() {
return (
...
<TouchableOpacity
onPress={() => this._sideMenu()}>
<Image ... />
</TouchableOpacity>
...
)
}
page1和page2都包含直接编写的标题。
Page1.js
render() {
return(
<View>
<Header navigation={this.props.navigation} />
...
</View>
)
}
答案 0 :(得分:3)
一个解决方案是将stackNavigator放置在抽屉导航中,如下所示:
const MainScene = createStackNavigator({
MainTab: {screen: MainTab},
OtherScene: {screen: OtherScene}
},{...})
const OtherScene: createStackNavigator({
SomeOtherScene: {screen: SomeOtherScene} // remove the drawer from here
},{...})
const DrawerScene = createDrawerNavigator({
Page1: {screen: Page1},
Page2: {screen: Page2},
MainScene: {
screen: MainScene,
navigationOptions: {
drawerLabel: () => null
}},
OtherScene: {
screen: OtherScene,
navigationOptions: {
drawerLabel: () => null
}},
},{initialRoute: "MainScene"})
这样,您就不会遇到未定义open / close / toggleDrawer函数的问题,甚至可以像这样使用它们:this.props.navigation.toggleDrawer();
如果您不希望“ MainScene”和“ OtherScene”出现在抽屉项目中,则只需为其抽屉标签返回null
答案 1 :(得分:1)
尝试一下 从“反应导航”导入{DrawerActions};
this.props.navigation.dispatch(DrawerActions.openDrawer());
this.props.navigation.dispatch(DrawerActions.closeDrawer());