打开/关闭导航抽屉在本机反应中不起作用

问题描述 投票:0回答:4

在我的反应本机应用程序中,我使用抽屉导航器创建了一个侧菜单,当我通过滑动打开它时,该菜单运行良好。但我想做的是通过单击按钮打开它。目前我正在尝试做槽式导航道具,相关代码如下:

import { withNavigation } from 'react-navigation';

class HallsList extends React.Component {
  constructor(props){
    super(props);
    this.state = {
      isSideMenuOpen: false
    };
  } 

  renderTopView = () => {
      return(
        <View>
          <View style = {Styles.sideMenuButton}>
            <Button
              onPress = {()=> {
                if (this.state.isSideMenuOpen) {
                  {this.props.navigation.navigate('DrawerOpen')}
                }
                else {
                  {this.props.navigation.navigate('DrawerClose')}
                }
                this.setState({isSideMenuOpen: !this.state.isSideMenuOpen})
              }
            }
            title = {'Side Menu'}
            />
          </View> ..... 


export default withNavigation(HallsList);

但是当我点击侧面菜单按钮时,它会被点击,但之后什么也没有发生。

react-native react-navigation side-menu react-navigation-drawer
4个回答
9
投票

只需更改以下代码部分即可

而不是

this.props.navigation.navigate('DrawerOpen')

this.props.navigation.openDrawer();

而不是

this.props.navigation.navigate('DrawerClose')

this.props.navigation.closeDrawer();


2
投票

您可以简单地使用:

this.props.navigation.toggleDrawer();

代替:

// to keep track of state of drawer
if (this.state.isSideMenuOpen) {
    {this.props.navigation.navigate('DrawerOpen')}
}
else {
    {this.props.navigation.navigate('DrawerClose')}
}
this.setState({isSideMenuOpen: !this.state.isSideMenuOpen})

0
投票

打开抽屉使用

this.props.navigation.openDrawer()
并关闭抽屉使用
this.props.navigation.closeDrawer()

来自本文档


0
投票

这适用于打开关闭和切换抽屉

navigation.dispatch(DrawerActions.openDrawer());

navigation.dispatch(DrawerActions.closeDrawer()); 导航.dispatch(DrawerActions.toggleDrawer());

© www.soinside.com 2019 - 2024. All rights reserved.