如何知道sideMenu可见性状态

时间:2018-12-28 08:49:15

标签: react-native-navigation react-native-navigation-v2

我有一个topBar,它带有一个可切换侧边菜单的按钮。

我已经注册了一个NavigationButtonPressed动作,如下所示

navigationButtonPressed({ buttonId }) {
    switch (buttonId) {
      case 'sideMenuButtonId':
        Navigation.mergeOptions(this.props.componentId, {
          sideMenu: {
            left: {
              visible: true
            }
          }
        });
        break
      default:
        break
    }
  }

但是在这种情况下,该按钮仅使sideMenu可见,而Im试图使用它,以便它切换菜单的打开和关闭状态。 所以我用下面看到的可变方法代替了上面的方法。

var sideMenuVisible = false

navigationButtonPressed({ buttonId }) {
    switch (buttonId) {
      case 'sideMenuButtonId':
        sideMenuVisible = !sideMenuVisible
        Navigation.mergeOptions(this.props.componentId, {
          sideMenu: {
            left: {
              visible: sideMenuVisible
            }
          }
        });
        break
      default:
        break
    }
  }

如果用户仅使用按钮来打开和关闭sideMenu,则可以很好地工作,但是用户也可以通过滑动菜单来打开/关闭菜单,也可以点击菜单将其关闭。

是否可以检查sideMenu的可见性,以便我可以正确地使用操作来打开/关闭命令菜单?

1 个答案:

答案 0 :(得分:0)

它可以做的简单得多。 认为您应该将其创建为状态,因为组件必须知道,当状态更改时,应重新呈现它。 所以像

state = { isOpen: false };

toggleSidebar = () => {
  this.setState({ isOpen: !isOpen })
}

现在,您应该在单击按钮时调用toggleSidebar函数